Casbin

Casbin

  • Documents
  • API
  • Editeur
  • Plugins IDE
  • Authentification unique (SSO)
  • Forums
  • Aide
  • Blogue
  • Pricing
  • Contact Sales
  • Languages iconFrançais
    • English
    • 中文
    • 한국어
    • Русский
    • Deutsch
    • 日本語
    • Aider à traduire
  • GitHub

›Extensions

Les Bases

  • Aperçu
  • Commencer
  • Comment ça marche
  • Tutoriels

Modélisation

  • Modèles pris en charge
  • Syntaxe pour les modèles
  • Effet
  • Fonction
  • RBAC
  • RBAC avec motif
  • RBAC avec domaines
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Modèle de priorité
  • Super Admin

Stockage

  • Stockage du modèle
  • Stockage de la politique
  • Chargement du sous-ensemble de la politique

Extensions

  • Enforcers
  • Adaptateurs
  • Observateurs
  • Répartiteurs
  • Responsables des rôles
  • Moyens
  • Moyens GraphQL
  • Moyens natifs du Cloud

API

  • Aperçu de l'API
  • API de gestion
  • RBAC API
  • RBAC avec API Domains
  • API RoleManager
  • Autorisations des données

Utilisation avancée

  • Multi-threads
  • Benchmarks
  • Optimisation des performances
  • Autorisation de Kubernetes
  • Autorisation de maillage de service par l'envoyé

Gestion

  • Portail Admin
  • Service Casbin
  • Gestion des logs et des erreurs
  • Utilisation du frontend

Editeur

  • Éditeur en ligne
  • Plugins IDE

En savoir plus

  • Nos Adopteurs
  • Contribuer
  • Politique de confidentialité
  • Conditions d'utilisation
Translate

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
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌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 SQLSQL@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 XormORMCasbin✅MySQL, PostgreSQL, TiDB, SQLite, SQL Server, Oracle sont supportés par Xorm
Adaptateur GormORMCasbin✅MySQL, PostgreSQL, Sqlite3, SQL Server sont supportés par Gorm
Adaptateur EntORMCasbin✅Les bases de graphiques MySQL, MariaDB, PostgreSQL, SQLite, Gremlin-based graph sont supportées par et ORM
Adaptateur ORM BeegoORMCasbin✅MySQL, PostgreSQL, Sqlite3 sont supportés par Beego ORM
Adaptateur SQLXORM@memwey✅MySQL, PostgreSQL, SQLite, Oracle sont supportés par SQLX
Adaptateur SqlxSQL@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 GFORM@vance-liu✅MySQL, SQLite, PostgreSQL, Oracle, SQL Server sont supportés par GoFrame ORM
Adaptateur ORM GoFrameORM@kotlin2018✅MySQL, SQLite, PostgreSQL, Oracle, SQL Server sont supportés par GoFrame ORM
Adaptateur PostgreSQL filtréSQLCasbin✅Pour PostgreSQL
Adaptateur pgx filtréSQL@pckhoi✅PostgreSQL est supporté par pgx
Adaptateur PostgreSQLSQL@cychiuae✅Pour PostgreSQL
Adaptateur RQLiteSQLSystèmes EDOMO✅Pour RQLite
MongoDB AdapterNoSQLCasbin✅Pour MongoDB basé sur MongoDB Go Driver
Adaptateur RethinkDBNoSQL@adityapandey9✅Pour RethinkDB
Adaptateur CassandraNoSQLCasbin❌Pour Apache Cassandra DB
Adaptateur DynamoDBNoSQLHOOQ❌Pour Amazon DynamoDB
DynacasbinNoSQLNewbMiao✅Pour Amazon DynamoDB
Adaptateur ArangoDBNoSQL@adamwasila✅Pour ArangoDB
Adaptateur Amazon S3NuageSolution❌Pour Minio et Amazon S3
Adaptateur DB Cosmos AzureNuage@codeur de l'espace✅Pour Microsoft Azure Cosmos DB
Adaptateur de Firestore GCPNuage@reedom❌Pour Google Cloud Platform Firestore
Adaptateur de stockage nuagique GCPNuagequrami❌Pour Google Cloud Platform Cloud Storage
Adaptateur GCP Cloud SpannerNuage@fleurinthenight✅Pour Google Cloud Platform Cloud Spanner
Adaptateur de consommationMagasin KV@ankitm123❌Pour Consommation de HashiCorp
Adaptateur Redis (Redigo)Magasin KVCasbin✅Pour Redis
Adaptateur Redis (go-redis)Magasin KV@mlsen✅Pour Redis
Adaptateur EtcdMagasin KV@sebastianliu❌Pour etcd
Adaptateur BoltDBMagasin KV@speza✅Pour Bolt
Adaptateur BoltMagasin KV@wirepair❌Pour Bolt
Adaptateur BadgerDBMagasin KV@inits✅Pour BadgerDB
Adaptateur ProtobufFluxCasbin❌Pour Google Protocol Buffers
Adaptateur JSONChaîne de caractèresCasbin❌Pour JSON
Adaptateur de chaînes de caractèresChaîne de caractères@qiangmzsx❌Pour la chaîne de caractères
Adaptateur de fichiers HTTPHTTP@h4ckedneko❌Pour http.FileSystem
Adaptateur de système de fichiersFichier@naucon❌Pour fs.FS et embed.FS
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur JDBCJDBCCasbin✅MySQL, Oracle, PostgreSQL, DB2, Sybase, SQL Server sont supportés par JDBC
Adaptateur HibernateORMCasbin✅Oracle, DB2, SQL Server, Sybase, MySQL, PostgreSQL sont supportés par Hibernate
Adaptateur MyBatisORMCasbin✅MySQL, Oracle, PostgreSQL, DB2, Sybase, SQL Server (le même que JDBC) sont supportés par MyBatis 3
Adaptateur HutoolORM@mapleafgo✅MySQL, Oracle, PostgreSQL, SQLite sont supportés par Hutool
MongoDB AdapterNoSQLCasbin✅MongoDB est supporté par mongodb-driver-sync
Adaptateur DynamoDBNoSQLCasbin❌Pour Amazon DynamoDB
Adaptateur RedisMagasin KVCasbin✅Pour Redis
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur de fichiers filtré (intégré)FichierCasbin❌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 baseORM natifCasbin✅pg, mysql, mysql2, sqlite3, oracledb, mssql sont supportés par l'adaptateur lui-même
Sequelize AdapterORMCasbin✅MySQL, PostgreSQL, SQLite, Microsoft SQL Server sont supportés par Sequelize
Adaptateur TypeORMORMCasbin✅MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL, MongoDB sont supportés par TypeORM
Adaptateur prismaORMCasbin✅MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, AWS Aurora, Azure SQL sont supportés par Prisma
Adaptateur KnexORM@sarneeh et genoux✅MSSQL, MySQL, PostgreSQL, SQLite3, Oracle sont supportés par Knex.js
Adaptateur Objection.jsORM@willsoto✅MSSQL, MySQL, PostgreSQL, SQLite3, Oracle sont supportés par Objection.js
Adaptateur natif PostgreSQL NodeSQL@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 MongooseNoSQLélastic.io et Casbin✅MongoDB est supporté par Mongoose
Adaptateur Mongoose (Sans Transaction)NoSQLminhducck✅MongoDB est supporté par Mongoose
Adaptateur natif Node MongoDBNoSQL@juicycleff✅Pour Node MongoDB Natif
Adaptateur DynamoDBNoSQL@fospitia✅Pour Amazon DynamoDB
Adaptateur CouchbaseNoSQL@MarkMYoung✅Pour Couchbase
Adaptateur RedisMagasin KVCasbin❌Pour Redis
Adaptateur RedisMagasin KV@NandaKishorJeripothula❌Pour Redis
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur de base de donnéesORMCasbin✅MySQL, PostgreSQL, SQLite, Microsoft SQL Server sont supportés par techone/database
Adaptateur Zend DbORMCasbin✅MySQL, PostgreSQL, SQLite, Oracle, IBM DB2, Microsoft SQL Server, Autre pilote PDO sont supportés par zend-db
Doctrine adaptateur DBAL (Recommandé)ORMCasbin✅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 MedooORMCasbin✅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-dbORMCasbin✅MySQL, PostgreSQL, Oracle, IBM DB2, Microsoft Sql Server, PDO, etc. sont supportés par laminas-db
Adaptateur Zend dbORMCasbin✅MySQL, PostgreSQL, Oracle, IBM DB2, Microsoft Sql Server, PDO, etc. sont supportés par zend-db
Adaptateur RedisMagasin KV@nsnake❌Pour Redis
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur SQLAlchemyORMCasbin✅PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase sont supportés par SQLAlchemy
Adaptateur de bases de données AsyncORMSampingantech✅PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase sont supportés par les bases de données
Adaptateur PeeweeORM@shblhy✅PostgreSQL, MySQL, SQLite sont supportés par Peewee
Adaptateur MongoEngineORM@zhangbailong945❌MongoDB est supporté par MongoEngine
Adaptateur Pony ORMORM@drorvinkler✅MySQL, PostgreSQL, SQLite, Oracle, CockroachDB sont supportés par Pony ORM
Adaptateur ORM TortoiseORM@thearchitecteur✅PostgreSQL (>=9.4), MySQL, MariaDB et SQLite sont supportés par Tortoise ORM
Adaptateur CouchbaseNoSQLScienceLogique✅ (sans remove_filtered_policy())Pour Couchbase
Adaptateur DynamoDBNoSQL@abqadeer✅Pour DynamoDB
Adaptateur PymongoNoSQLCasbin❌MongoDB est supporté par Pymongo
Adaptateur Firebase GCPNuage@devrushi41✅Pour Google Cloud Platform Firebase
Async ormar AdapterORMsampingantech✅PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase are supported by ormar
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur EFORMCasbin❌MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. sont supportés par Entity Framework 6
Adaptateur EFCoreORMCasbin✅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. sont supportés par Entity Framework Core
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur DieselORMCasbin✅SQLite, PostgreSQL, MySQL sont supportés par Diesel
Adaptateur SqlxORMCasbin✅PostgreSQL, MySQL est supporté par Sqlx avec une opération totalement asynchrone
Adaptateur de merORMformat@@0 lingdu1234✅PostgreSQL, MySQL est supporté par SeaORM avec une opération totalement asynchrone
Adaptateur JSONChaîne de caractèresCasbin✅Pour JSON
Adaptateur YAMLChaîne de caractèresCasbin✅Pour YAML
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Sequel AdaptateurORMCasbinRuby✅ADO, Amalgalite, IBM_DB, JDBC, MySQL, Mysql2, ODBC, Oracle, PostgreSQL, SQLAnywhere, SQLite3 et TinyTDS sont supportés par Séquel
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur de mémoire (intégré)MémoireCasbin❌Pour la mémoire
Adaptateur fluideORMCasbin✅PostgreSQL, SQLite, MySQL, MongoDB sont supportés par Fluent
AdaptateurType de texteAuteurAutoSaveLibellé
Adaptateur de fichiers (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules)
Adaptateur de fichiers filtré (intégré)FichierCasbin❌Pour les fichiers .CSV (valeurs séparées par des virgules) avec le support du chargement des sous-ensembles de stratégies
Adaptateur LuaSQLORMCasbin✅MySQL, PostgreSQL, SQLite3 sont supportés par LuaSQL
Adapteur 4DaysORMORMCasbin✅MySQL, SQLite3 sont supportés par 4DaysORM
note
  1. Si casbin.NewEnforcer() est appelé avec un adaptateur explicite ou implicite, la politique sera chargée automatiquement.
  2. Vous pouvez appeler e.LoadPolicy() pour recharger les règles de politique depuis le stockage.
  3. 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 appeler SavePolicy() 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
importez "github.com/casbin/casbin"

e := casbin.NewEnforcer("exemples/basic_model.conf", "exemples/basic_policy.csv")
utiliser Casbin\Enforcer;

$e = new Enforcer('examples/basic_model.conf', 'examples/basic_policy.csv');
utiliser 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("exemples/basic_policy.csv")
e := casbin.NewEnforcer("examples/basic_model.conf", a)
utiliser Casbin\Enforcer;
utiliser Casbin\Persist\Adapters\FileAdapter;

$a = new FileAdapter('examples/basic_policy.csv');
$e = new Enforcer('examples/basic_model.conf', $a);
utiliser 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("exemples/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.com/php-casbin/dbal-adapter

use Casbin\Enforcer;
use CasbinAdapter\DBAL\Adapter as DatabaseAdapter;

$config = [
// Either 'driver' with one of the following values:
// pdo_mysql,pdo_sqlite,pdo_pgsql,pdo_oci (unstable),pdo_sqlsrv,pdo_sqlsrv,
// mysqli,sqlanywhere,sqlsrv,ibm_db2 (unstable),drizzle_pdo_mysql
'driver' => 'pdo_mysql',
'host' => '127.0.0.1',
'dbname' => 'test',
'user' => 'root',
'password' => '',
'port' => '3306',
];

$a = DatabaseAdapter::newAdapter($config);
$e = new Enforcer('examples/basic_model.conf', $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 :

  1. Politique de chargement de A à la mémoire
   e, _ := NewEnforcer(m, A)

ou

e.SetAdapter(A)
e.LoadPolicy()
  1. convertissez votre adaptateur de A à B

    e.SetAdapter(B)
    
  2. Enregistrer la politique de la mémoire dans B

    . oadPolicy()
    

Charger/Enregistrer à l'exécution

Vous pouvez également recharger le modèle, recharger la charte ou enregistrer la charte après l'initialisation :

// Recharger 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).

note
  1. La fonctionnalité Sauvegarde automatique est facultative. Un adaptateur peut choisir de l'implémenter ou non.
  2. Auto-Save ne fonctionne que pour un agent de sécurité Casbin lorsque l'adaptateur que le responsable utilise le supporte.
  3. Voir la colonne Sauvegarde automatique dans la liste ci-dessus pour voir si Sauvegarde 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(...)

// Active l'option de 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éthodeType de texteLibellé
format@@0 LoadPolicy()mandatoryCharger toutes les règles de politique du stockage
EnregistrerPolicy()mandatoryEnregistrer toutes les règles de politique sur le stockage
AddPolicy()optionnelAjouter une règle de politique au stockage
RemovePolicy()optionnelSupprimer une règle de politique du stockage
RemoveFilteredPolicy()optionnelSupprimer les règles de politique qui correspondent au filtre du stockage
note

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 (un *Adapter) RemoveFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) erreur {
    return errors.New("non implémenté")
}

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 de p_type ou Ptype.
  • 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.
  • Filtré par charge nécessite un filtre `` en tant que paramètre. Le filtre devrait être quelque chose comme ça. json { "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

← EnforcersObservateurs →
  • Adaptateurs supportés
  • Exemples
    • Adaptateur de fichier (intégré)
    • MySQL adapter
  • Utilisez votre propre adaptateur de stockage
  • Migrer/Convertir entre différents adaptateurs
  • Charger/Enregistrer à l'exécution
  • AutoSave
    • Comment écrire un adaptateur
    • Qui est responsable de la création de la DB?
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization