Adaptateurs
à Casbin, le stockage des politiques est implémenté en tant qu'adaptateur (aka middleware pour Casbin). A Casbin user can use an adapter to load policy rules from a storage (aka LoadPolicy()
), or save policy rules to it (aka SavePolicy()
). Pour garder le poids léger, nous ne plaçons pas le code de l'adaptateur dans la bibliothÚque principale.
Adaptateurs supportĂ©sâ
Une liste complĂšte des adaptateurs Casbin est fournie ci-dessous. Toute contribution de tierce partie sur un nouvel adaptateur est la bienvenue, veuillez nous en informer et nous la mettrons dans cette liste:)
- Go
- Java
- Node.js
- PHP
- Python
- .NET
- Rust
- Ruby
- Swift
- Lua
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur de fichiers filtrĂ© (intĂ©grĂ©) | Fichier | @faceleless-saint | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) avec le support du chargement des sous-ensembles de stratĂ©gies |
Adaptateur SQL | SQL | @Blank-Xu | â | MySQL, PostgreSQL, SQL Server, SQLite3 sont pris en charge dans la branche master et Oracle est supportĂ© dans la branche oracle par database/sql |
Adaptateur Xorm | ORM | Casbin | â | MySQL, PostgreSQL, TiDB, SQLite, SQL Server, Oracle sont supportĂ©s par Xorm |
GORM Adapter | ORM | Casbin | â | MySQL, PostgreSQL, Sqlite3, SQL Server are supported by GORM |
GORM Adapter Ex | ORM | Casbin | â | MySQL, PostgreSQL, Sqlite3, SQL Server are supported by GORM |
Adaptateur Ent | ORM | Casbin | â | Les bases de graphiques MySQL, MariaDB, PostgreSQL, SQLite, Gremlin-based graph sont supportĂ©es par et ORM |
Adaptateur ORM Beego | ORM | Casbin | â | MySQL, PostgreSQL, Sqlite3 sont supportĂ©s par Beego ORM |
Adaptateur SQLX | ORM | @memwey | â | MySQL, PostgreSQL, SQLite, Oracle sont supportĂ©s par SQLX |
Adaptateur Sqlx | ORM | @Blank-Xu | â | MySQL, PostgreSQL, SQL Server, SQLite3 sont pris en charge dans la branche master et Oracle est supportĂ© dans la branche oracle par sqlx |
Adaptateur ORM GF | ORM | @vance-liu | â | MySQL, SQLite, PostgreSQL, Oracle, SQL Server are supported by GoFrame ORM |
Adaptateur ORM GoFrame | ORM | @kotlin2018 | â | MySQL, SQLite, PostgreSQL, Oracle, SQL Server are supported by GoFrame ORM |
gf-adapter | ORM | @zcyc | â | MySQL, SQLite, PostgreSQL, Oracle, SQL Server are supported by GoFrame ORM |
Gdb Adapter | ORM | @jxo-me | â | MySQL, SQLite, PostgreSQL, Oracle, SQL Server are supported by GoFrame ORM |
GoFrame V2 Adapter | ORM | @hailaz | â | MySQL, SQLite, PostgreSQL, Oracle, SQL Server are supported by GoFrame ORM |
Adaptateur PostgreSQL filtrĂ© | SQL | Casbin | â | Pour PostgreSQL |
Adaptateur pgx filtrĂ© | SQL | @pckhoi | â | PostgreSQL est supportĂ© par pgx |
Adaptateur PostgreSQL | SQL | @cychiuae | â | Pour PostgreSQL |
Adaptateur RQLite | SQL | SystĂšmes EDOMO | â | Pour RQLite |
MongoDB Adapter | NoSQL | Casbin | â | Pour MongoDB basĂ© sur MongoDB Go Driver |
Adaptateur RethinkDB | NoSQL | @adityapandey9 | â | Pour RethinkDB |
Adaptateur Cassandra | NoSQL | Casbin | â | Pour Apache Cassandra DB |
Adaptateur DynamoDB | NoSQL | HOOQ | â | Pour Amazon DynamoDB |
Dynacasbin | NoSQL | NewbMiao | â | Pour Amazon DynamoDB |
Adaptateur ArangoDB | NoSQL | @adamwasila | â | Pour ArangoDB |
Adaptateur Amazon S3 | Nuage | Solution | â | Pour Minio et Amazon S3 |
Adaptateur DB Cosmos Azure | Nuage | @codeur de l'espace | â | Pour Microsoft Azure Cosmos DB |
Adaptateur de Firestore GCP | Nuage | @reedom | â | Pour Google Cloud Platform Firestore |
Adaptateur de stockage nuagique GCP | Nuage | qurami | â | Pour Google Cloud Platform Cloud Storage |
Adaptateur GCP Cloud Spanner | Nuage | @fleurinthenight | â | Pour Google Cloud Platform Cloud Spanner |
Adaptateur de consommation | Magasin KV | @ankitm123 | â | Pour Consommation de HashiCorp |
Adaptateur Redis (Redigo) | Magasin KV | Casbin | â | Pour Redis |
Adaptateur Redis (go-redis) | Magasin KV | @mlsen | â | Pour Redis |
Adaptateur Etcd | Magasin KV | @sebastianliu | â | Pour etcd |
Adaptateur BoltDB | Magasin KV | @speza | â | Pour Bolt |
Adaptateur Bolt | Magasin KV | @wirepair | â | Pour Bolt |
Adaptateur BadgerDB | Magasin KV | @inits | â | Pour BadgerDB |
Adaptateur Protobuf | Flux | Casbin | â | Pour Google Protocol Buffers |
Adaptateur JSON | ChaĂźne de caractĂšres | Casbin | â | Pour JSON |
Adaptateur de chaĂźnes de caractĂšres | ChaĂźne de caractĂšres | @qiangmzsx | â | Pour la chaĂźne de caractĂšres |
Adaptateur de fichiers HTTP | HTTP | @h4ckedneko | â | Pour http.FileSystem |
Adaptateur de systĂšme de fichiers | Fichier | @naucon | â | Pour fs.FS et embed.FS |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur JDBC | JDBC | Casbin | â | MySQL, Oracle, PostgreSQL, DB2, Sybase, SQL Server sont supportĂ©s par JDBC |
Adaptateur Hibernate | ORM | Casbin | â | Oracle, DB2, SQL Server, Sybase, MySQL, PostgreSQL sont supportĂ©s par Hibernate |
Adaptateur MyBatis | ORM | Casbin | â | MySQL, Oracle, PostgreSQL, DB2, Sybase, SQL Server (le mĂȘme que JDBC) sont supportĂ©s par MyBatis 3 |
Adaptateur Hutool | ORM | @mapleafgo | â | MySQL, Oracle, PostgreSQL, SQLite sont supportĂ©s par Hutool |
MongoDB Adapter | NoSQL | Casbin | â | MongoDB est supportĂ© par mongodb-driver-sync |
Adaptateur DynamoDB | NoSQL | Casbin | â | Pour Amazon DynamoDB |
Adaptateur Redis | Magasin KV | Casbin | â | Pour Redis |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur de fichiers filtrĂ© (intĂ©grĂ©) | File | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) avec le support du chargement des sous-ensembles de stratĂ©gies |
Adaptateur de chaĂźnes de caractĂšres (intĂ©grĂ©) | ChaĂźne de caractĂšres | @calebfaruki | â | Pour la chaĂźne de caractĂšres |
Adaptateur de base | ORM natif | Casbin | â | pg, mysql, mysql2, sqlite3, oracledb, mssql sont supportĂ©s par l'adaptateur lui-mĂȘme |
Sequelize Adapter | ORM | Casbin | â | MySQL, PostgreSQL, SQLite, Microsoft SQL Server sont supportĂ©s par Sequelize |
Adaptateur TypeORM | ORM | Casbin | â | MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL, MongoDB sont supportĂ©s par TypeORM |
Adaptateur prisma | ORM | Casbin | â | MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, AWS Aurora, Azure SQL sont supportĂ©s par Prisma |
Adaptateur Knex | ORM | @sarneeh et genoux | â | MSSQL, MySQL, PostgreSQL, SQLite3, Oracle sont supportĂ©s par Knex.js |
Adaptateur Objection.js | ORM | @willsoto | â | MSSQL, MySQL, PostgreSQL, SQLite3, Oracle sont supportĂ©s par Objection.js |
MikroORM Adapter | ORM | @baisheng | â | MongoDB, MySQL, MariaDB, PostgreSQL, SQLite are supported by MikroORM |
Adaptateur natif PostgreSQL Node | SQL | @touchifyapp | â | Adaptateur PostgreSQL avec un support avancĂ© du chargement des sous-ensembles de rĂšgles et des performances amĂ©liorĂ©es avec node-postgres. |
Adaptateur Mongoose | NoSQL | Ă©lastic.io et Casbin | â | MongoDB est supportĂ© par Mongoose |
Adaptateur Mongoose (Sans Transaction) | NoSQL | minhducck | â | MongoDB is supported by Mongoose |
Adaptateur natif Node MongoDB | NoSQL | @juicycleff | â | Pour Node MongoDB Natif |
Adaptateur DynamoDB | NoSQL | @fospitia | â | Pour Amazon DynamoDB |
Adaptateur Couchbase | NoSQL | @MarkMYoung | â | Pour Couchbase |
Adaptateur Redis | Magasin KV | Casbin | â | Pour Redis |
Redis Adapter | KV store | @NandaKishorJeripothula | â | For Redis |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur de base de donnĂ©es | ORM | Casbin | â | MySQL, PostgreSQL, SQLite, Microsoft SQL Server sont supportĂ©s par techone/database |
Adaptateur Zend Db | ORM | Casbin | â | MySQL, PostgreSQL, SQLite, Oracle, IBM DB2, Microsoft SQL Server, Autre pilote PDO sont supportĂ©s par zend-db |
Doctrine adaptateur DBAL (RecommandĂ©) | ORM | Casbin | â | Une puissante couche d'abstraction de base de donnĂ©es PHP (DBAL) avec de nombreuses fonctionnalitĂ©s pour l'introspection et la gestion du schĂ©ma de base de donnĂ©es. |
Adaptateur Medoo | ORM | Casbin | â | Medoo est un framework de base de donnĂ©es PHP lĂ©ger pour accĂ©lĂ©rer le dĂ©veloppement, supporte toutes les bases de donnĂ©es SQL, y compris MySQL , MSSQL , SQLite , MariaDB , PostgreSQL , Sybase , Oracle et plus. |
Adaptateur laminas-db | ORM | Casbin | â | MySQL, PostgreSQL, Oracle, IBM DB2, Microsoft SQL Server, PDO, etc. are supported by laminas-db |
Adaptateur Zend db | ORM | Casbin | â | MySQL, PostgreSQL, Oracle, IBM DB2, Microsoft SQL Server, PDO, etc. are supported by zend-db |
ThinkORM Adapter (ThinkPHP) | ORM | Casbin | â | MySQL, PostgreSQL, SQLite, Oracle, Microsoft SQL Server, MongoDB are supported by ThinkORM |
Adaptateur Redis | Magasin KV | @nsnake | â | Pour Redis |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur Django ORM | ORM | Casbin | â | PostgreSQL, MariaDB, MySQL, Oracle, SQLite, IBM DB2, Microsoft SQL Server, Firebird, ODBC sont supportĂ©s par Django ORM |
Adaptateur SQLObject | ORM | Casbin | â | PostgreSQL, MySQL, SQLite, Microsoft SQL Server, Firebird, Sybase, MAX DB, pyfirebirdsql sont supportĂ©s par SQLObject |
Adaptateur SQLAlchemy | ORM | Casbin | â | PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase sont supportĂ©s par SQLAlchemy |
Async SQLAlchemy Adapter | ORM | Casbin | â | PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase are supported by SQLAlchemy |
Adaptateur de bases de donnĂ©es Async | ORM | Sampingantech | â | PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase sont supportĂ©s par les bases de donnĂ©es |
Adaptateur Peewee | ORM | @shblhy | â | PostgreSQL, MySQL, SQLite sont supportĂ©s par Peewee |
Adaptateur MongoEngine | ORM | @zhangbailong945 | â | MongoDB est supportĂ© par MongoEngine |
Adaptateur Pony ORM | ORM | @drorvinkler | â | MySQL, PostgreSQL, SQLite, Oracle, CockroachDB sont supportĂ©s par Pony ORM |
Adaptateur ORM Tortoise | ORM | @thearchitecteur | â | PostgreSQL (>=9.4), MySQL, MariaDB et SQLite sont supportĂ©s par Tortoise ORM |
Async Ormar Adapter | ORM | @shepilov-vladislav | â | PostgreSQL, MySQL, SQLite are supported by Ormar |
SQLModel Adapter | ORM | @shepilov-vladislav | â | PostgreSQL, MySQL, SQLite are supported by SQLModel |
Adaptateur Couchbase | NoSQL | ScienceLogique | â
(sans remove_filtered_policy() ) | Pour Couchbase |
Adaptateur DynamoDB | NoSQL | @abqadeer | â | Pour DynamoDB |
Adaptateur Pymongo | NoSQL | Casbin | â | MongoDB est supportĂ© par Pymongo |
Redis Adapter | NoSQL | Casbin | â | For Redis |
Adaptateur Firebase GCP | Nuage | @devrushi41 | â | Pour Google Cloud Platform Firebase |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur EF | ORM | Casbin | â | MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. sont supportĂ©s par Entity Framework 6 |
Adaptateur EFCore | ORM | Casbin | â | MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. sont supportĂ©s par Entity Framework Core |
Adaptateur EFCore (.NET Core 5) | ORM | @g4dvali | â | MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. are supported by Entity Framework Core |
Linq2DB Adapter | ORM | @Tirael | â | MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, Access, Firebird, Sybase, etc. are supported by linq2db |
Azure Cosmos DB Adapter | Cloud | @sagarkhandelwal | â | For Microsoft Azure Cosmos DB |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur Diesel | ORM | Casbin | â | SQLite, PostgreSQL, MySQL sont supportĂ©s par Diesel |
Adaptateur Sqlx | ORM | Casbin | â | PostgreSQL, MySQL est supportĂ© par Sqlx avec une opĂ©ration totalement asynchrone |
Adaptateur de mer | ORM | @lingdu1234 | â | PostgreSQL, MySQL, SQLite are supported by SeaORM with fully asynchronous operation |
SeaORM Adapter | ORM | @ZihanType | â | PostgreSQL, MySQL, SQLite are supported by SeaORM with fully asynchronous operation |
Rbatis Adapter | ORM | rbatis | â | MySQL, PostgreSQL, SQLite, SQL Server, MariaDB, TiDB, CockroachDB, Oracle are supported by Rbatis |
DynamodDB Adapter | NoSQL | @fospitia | â | For Amazon DynamoDB |
MongoDB Adapter | MongoDB | @wangjun861205 | â | For MongoDB |
Adaptateur JSON | ChaĂźne de caractĂšres | Casbin | â | Pour JSON |
Adaptateur YAML | String | Casbin | â | Pour YAML |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Sequel Adaptateur | ORM | CasbinRuby | â | ADO, Amalgalite, IBM_DB, JDBC, MySQL, Mysql2, ODBC, Oracle, PostgreSQL, SQLAnywhere, SQLite3 et TinyTDS sont supportĂ©s par SĂ©quel |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur de mĂ©moire (intĂ©grĂ©) | MĂ©moire | Casbin | â | Pour la mĂ©moire |
Adaptateur fluide | ORM | Casbin | â | PostgreSQL, SQLite, MySQL, MongoDB sont supportĂ©s par Fluent |
Adaptateur | Type de texte | Auteur | AutoSave | Description |
---|---|---|---|---|
Adaptateur de fichiers (intĂ©grĂ©) | Fichier | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) |
Adaptateur de fichiers filtrĂ© (intĂ©grĂ©) | File | Casbin | â | Pour les fichiers .CSV (valeurs sĂ©parĂ©es par des virgules) avec le support du chargement des sous-ensembles de stratĂ©gies |
Adaptateur LuaSQL | ORM | Casbin | â | MySQL, PostgreSQL, SQLite3 sont supportĂ©s par LuaSQL |
Adapteur 4DaysORM | ORM | Casbin | â | MySQL, SQLite3 sont supportĂ©s par 4DaysORM |
OpenResty Adapter | ORM | @tom2nonames | â | MySQL, PostgreSQL are supported by it |
- Si
casbin.NewEnforcer()
est appelé avec un adaptateur explicite ou implicite, la politique sera chargée automatiquement. - Vous pouvez appeler
e.LoadPolicy()
pour recharger les rÚgles de politique depuis le stockage. - Si l'adaptateur ne supporte pas la fonctionnalité
Sauvegarde automatique
, Les rĂšgles de politique ne peuvent pas ĂȘtre sauvegardĂ©es automatiquement sur le stockage lorsque vous ajoutez ou supprimez des rĂšgles. Vous devez appelerSavePolicy()
manuellement pour enregistrer toutes les rĂšgles de la politique.
Exemplesâ
Nous fournissons ici plusieurs exemples:
Adaptateur de fichier (intĂ©grĂ©)â
Ci-dessous montre comment initialiser un responsable à partir de l'adaptateur de fichier intégré:
- Go
- PHP
- Rust
import "github.com/casbin/casbin"
e := casbin.NewEnforcer("examples/basic_model.conf", "examples/basic_policy.csv")
use Casbin\Enforcer;
$e = new Enforcer('examples/basic_model.conf', 'examples/basic_policy.csv');
use casbin::prelude::*;
let mut e = Enforcer::new("examples/basic_model.conf", "examples/basic_policy.csv").await?;
Il en va de mĂȘme avec :
- Go
- PHP
- Rust
import (
"github.com/casbin/casbin"
"github.com/casbin/casbin/file-adapter"
)
a := fileadapter.NewAdapter("examples/basic_policy.csv")
e := casbin.NewEnforcer("examples/basic_model.conf", a)
use Casbin\Enforcer;
use Casbin\Persist\Adapters\FileAdapter;
$a = new FileAdapter('examples/basic_policy.csv');
$e = new Enforcer('examples/basic_model.conf', $a);
use casbin::prelude::*;
let a = FileAdapter::new("examples/basic_policy.csv");
let e = Enforcer::new("examples/basic_model.conf", a).await?;
MySQL adapterâ
Voici comment initialiser un responsable de la base de données MySQL. il se connecte à une base de données MySQL en 127.0.0.1:3306 avec un mot de passe root et vide.
- Go
- Rust
- PHP
import (
"github.com/casbin/casbin"
"github.com/casbin/mysql-adapter"
)
a := mysqladapter.NewAdapter("mysql", "root:@tcp(127.0.0.1:3306)/")
e := casbin.NewEnforcer("examples/basic_model.conf", a)
// https://github. om/casbin-rs/diesel-adapter
// assurez-vous d'activer la fonctionnalité `mysql`
utilisez casbin::prelude::*;
utilisez diesel_adapter::{ConnOptions, DieselAdapter};
let mut conn_opts = ConnOptions::default();
conn_opts
. et_hostname("127.0.0.1")
. et_port(3306)
.set_host("127.0.0.1:3306") // Ă©crase le nom d'hĂŽte, la configuration du port
.set_database("casbin")
. et_auth("casbin_rs", "casbin_rs");
let a = DieselAdapter::new(conn_opts)?;
let mut e = Enforcer::new("examples/basic_model.conf", a).await?;
// https://github. om/php-casbin/dbal-adapter
utilise Casbin\Enforcer;
utilise CasbinAdapter\DBAL\Adapter comme DatabaseAdapter;
$config = [
// Soit 'driver' avec l'une des valeurs suivantes :
// pdo_mysql, do_sqlite,pdo_pgsql,pdo_oci (instable),pdo_sqlsrv,pdo_sqlsrv,
// mysqli,sqlanywhere,sqlsrv,ibm_db2 (instable), rizzle_pdo_mysql
'driver' => 'pdo_mysql',
'host' => '127. .0.1',
'dbname' => 'test',
'user' => 'root',
'mot de passe' => '',
'port' => '3306',
];
$a = DatabaseAdapter::newAdapter($config);
$e = new Enforcer('exemples/basic_model. onf', $a);
Utilisez votre propre adaptateur de stockageâ
Vous pouvez utiliser votre propre adaptateur comme ci-dessous:
import (
"github.com/casbin/casbin"
"github.com/your-username/your-repo"
)
a := yourpackage.NewAdapter(params)
e := casbin.NewEnforcer("examples/basic_model.conf", a)
Migrer/Convertir entre diffĂ©rents adaptateursâ
Si vous voulez convertir l'adaptateur de A
Ă B
, vous pouvez le faire comme ceci :
Politique de chargement de A à la mémoire
e, _ := NewEnforcer(m, A)
ou
e.SetAdapter(A)
e.LoadPolicy()convertir votre adaptateur de A Ă B
e.SetAdapter(B)
Enregistrer la politique de la mémoire dans B
e.LoadPolicy()
Charger/Enregistrer au moment de l'exĂ©cutionâ
Vous pouvez Ă©galement recharger le modĂšle, recharger la politique ou enregistrer la politique aprĂšs l'initialisation :
// Recharge le modĂšle Ă partir du fichier CONF du modĂšle.
e.LoadModel()
// Recharge la charte à partir de fichier/base de données.
e.LoadPolicy()
// Sauvegarde la politique actuelle (généralement aprÚs avoir été modifiée avec l'API Casbin) dans fichier/base de données.
e.SavePolicy()
AutoSaveâ
Il y a une fonctionnalité appelée Auto-Save
pour les adaptateurs. Lorsqu'un adaptateur prend en charge Auto-Save
, cela signifie qu'il peut soutenir l'ajout d'une rÚgle de politique unique au stockage, ou la suppression d'une rÚgle de politique unique du stockage. C'est à la différence de SavePolicy()
, parce que ce dernier supprimera toutes les rĂšgles de politique dans le stockage et sauvegardera toutes les rĂšgles de politique de Casbin pour le stockage. Elle peut donc ĂȘtre confrontĂ©e Ă des problĂšmes de performance lorsque le nombre de rĂšgles de politique est important.
Lorsque l'adaptateur prend en charge Auto-Save
, vous pouvez basculer cette option via la fonction Enforcer.EnableAutoSave()
. L'option est activée par défaut (si l'adaptateur le supporte).
- La fonctionnalité
Sauvegarde automatique
est facultative. Un adaptateur peut choisir de l'implémenter ou non. Auto-Save
ne fonctionne que pour un agent de sécurité Casbin lorsque l'adaptateur que le responsable utilise le supporte.- Voir la colonne
Sauvegarde automatique
dans la liste ci-dessus pour voir siSauvegarde automatique
est prise en charge par un adaptateur.
Voici un exemple sur la façon d'utiliser Auto-Save
:
import (
"github.com/casbin/casbin"
"github.com/casbin/xorm-adapter"
_ "github.com/go-sql-driver/mysql"
)
// Par défaut, l'option de sauvegarde automatique est activée pour un responsable.
a := xormadapter.NewAdapter("mysql", "mysql_username:mysql_password@tcp(127.0.1:3306)/")
e := casbin.NewEnforcer("examples/basic_model.conf", a)
// DĂ©sactive l'option de sauvegarde automatique.
e.EnableAutoSave(false)
// Parce que la sauvegarde automatique est désactivée, le changement de politique n'affecte que la politique dans Casbin enforcer,
// cela n'affecte pas la politique dans le stockage.
e.AddPolicy(...)
e.RemovePolicy(...)
// Activer l'option Sauvegarde automatique.
e.EnableAutoSave(true)
// Parce que la sauvegarde automatique est activée, le changement de politique affecte non seulement la politique de l'application de Casbin,
// mais affecte Ă©galement la politique dans le stockage.
e.AddPolicy(...)
e.RemovePolicy(...)
Pour plus dâexemples, veuillez voir : https://github.com/casbin/xorm-adapter/blob/master/adapter_test.go
Comment Ă©crire un adaptateurâ
Tous les adaptateurs doivent implémenter l'interface Adapter en fournissant au moins deux méthodes obligatoires :LoadPolicy(modÚle modÚle. odel) erreur
et erreur SavePolicy(model model.Model)
.
Les trois autres fonctions sont facultatives. Ils devraient ĂȘtre implĂ©mentĂ©s si l'adaptateur prend en charge la fonctionnalitĂ© Sauvegarde automatique
.
MĂ©thode | Type de texte | Description |
---|---|---|
format@@0 LoadPolicy() | mandatory | Charger toutes les rĂšgles de politique du stockage |
EnregistrerPolicy() | mandatory | Enregistrer toutes les rĂšgles de politique sur le stockage |
AddPolicy() | optionnel | Ajouter une rĂšgle de politique au stockage |
RemovePolicy() | optional | Supprimer une rĂšgle de politique du stockage |
RemoveFilteredPolicy() | optional | Supprimer les rĂšgles de politique qui correspondent au filtre du stockage |
Si un adaptateur ne supporte pas Auto-Save
, il devrait fournir une implémentation vide pour les trois fonctions optionnelles. Voici un exemple pour Golang:
// AddPolicy ajoute une rĂšgle de politique au stockage.
func (un *Adapter) AddPolicy(sec string, ptype string, rule []string) erreur {
retourne des erreurs. ew("non implémenté")
}
// Supprime une rĂšgle de politique du stockage.
func (un *Adapter) RemovePolicy(sec string, ptype string, rule []string) erreur {
retourne des erreurs. ew("non implémenté")
}
// RemoveFilteredPolicy supprime les rÚgles de régulation qui correspondent au filtre du stockage.
func (a *Adapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) error {
return errors.New("not implemented")
}
Casbin enforcer ignorera l'erreur non implémentée
lors de l'appel de ces trois fonctions optionnelles.
Il y a des détails sur la façon d'écrire un adaptateur.
- Structure des données. L'adaptateur devrait prendre en charge la lecture à au moins six colonnes.
- Nom de la base de donnĂ©es. Le nom de la base de donnĂ©es par dĂ©faut doit ĂȘtre
casbin
. - Nom de la table. Le nom de la table par dĂ©faut doit ĂȘtre
casbin_rule
. - Colonne Ptype. Le nom de cette colonne doit ĂȘtre
ptype
au lieu dep_type
ouPtype
. - La dĂ©finition de la table doit ĂȘtre
(id int clé primaire, ptype varchar, v0 varchar, v1 varchar, v2 varchar, v3 varchar, v4 varchar, v5 varchar)
. - L'index de clĂ© unique doit ĂȘtre construit sur les colonnes
ptype,v0,v1,v2,v3,v4,v5
. LoadFilteredPolicy
nécessite unfiltre
en tant que paramĂštre. Le filtre devrait ĂȘtre quelque chose comme ça.{
"p":[ [ "alice" ], [ "bob" ] ],
"g":[ [ "", "book_group" ], [ "", "pen_group" ] ],
"g2":[ [ "alice" ] ]
}
Qui est responsable de la crĂ©ation de la DB?â
Comme convention, l'adaptateur devrait ĂȘtre en mesure de crĂ©er automatiquement une base de donnĂ©es nommĂ©e casbin
si elle n'existe pas et l'utiliser pour le stockage de la politique. Veuillez utiliser l'adaptateur Xorm comme implémentation de référence : https://github.com/casbin/xorm-adapter