Casbin

Casbin

  • Texte
  • API
  • Redakteur
  • IDE-Plugins
  • Single Sign-On (SSO)
  • Forum
  • Hilfe
  • Blog
  • Pricing
  • Contact Sales
  • Languages iconDeutsch
    • English
    • 中文
    • 한국어
    • Русский
    • Français
    • 日本語
    • Helfen Sie zu übersetzen
  • GitHub

›Erweiterungen

Die Grundlagen

  • Übersicht
  • Los geht's
  • So funktioniert es
  • Anleitungen

Modell

  • Unterstützte Modelle
  • Syntax für Modelle
  • Effektor
  • Funktion
  • RBAC
  • RBAC with Pattern
  • RBAC mit Domänen
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Prioritätsmodell
  • Super-Admin

Speicher

  • Modellspeicher
  • Richtlinien-Speicher
  • Richtlinien-Untermengenladen

Erweiterungen

  • Enforcers
  • Adapter
  • Beobachter
  • Dispatcher
  • Rollen-Manager
  • Middleware
  • GraphQL Middlewares
  • Cloud Native Middlewares

API

  • API-Übersicht
  • Management-API
  • RBAC API
  • RBAC mit Domains API
  • Rollen-Manager-API
  • Datenberechtigungen

Erweiterte Nutzung

  • Mehrfachfachen
  • Benchmarks
  • Leistungsoptimierung
  • Autorisierung von Kubernetes
  • Genehmigung des Service-Mesh durch den Gesandten

Management

  • Admin-Portal
  • Kasbin-Dienst
  • Log- & Fehlerbehandlung
  • Frontend-Nutzung

Redakteur

  • Online-Editor
  • IDE-Plugins

Mehr

  • Unsere Adopter
  • Mitwirken
  • Datenschutzerklärung
  • Nutzungsbedingungen
Translate

Adapter

In Casbin wird die Speicherung der Richtlinien als Adapter implementiert (auch Middleware für Casbin). Ein Casbin-Benutzer kann einen Adapter verwenden, um Regeln von einem Speicher zu laden (aka LoadPolicy()), oder speichern Sie Richtlinien-Regeln (aka SavePolicy()). Um das Gewicht gering zu halten, legen wir den Adaptercode nicht in die Hauptbibliothek ein.

Unterstützte Adapter

Eine vollständige Liste der Casbin-Adapter finden Sie wie unten. Jeder Beitrag von Drittanbietern an einem neuen Adapter ist willkommen, bitte informieren Sie uns und wir werden ihn in diese Liste setzen:)

Go
Java
Node.js
PHP
Python
.NET
Rust
Ruby
Swift
Lua
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Gefilterter Datei-Adapter (eingebaut)Datei@gesichts-Heiliger❌Für .CSV (Comma-Separated Values) Dateien mit Richtlinien-Untermengenunterstützung
SQL-AdapterSQL@Blank-Xu✅MySQL, PostgreSQL, SQL Server, SQLite3 werden in Master Branch unterstützt und Oracle wird in Orakel Branch von Datenbank/sql unterstützt
Xorm-AdapterRMCasbin✅MySQL, PostgreSQL, TiDB, SQLite, SQL Server, Oracle werden von Xorm unterstützt
Gorm-AdapterRMCasbin✅MySQL, PostgreSQL, Sqlite3, SQL Server werden von Gorm unterstützt
Ent-AdapterRMCasbin✅MySQL, MariaDB, PostgreSQL, SQLite, Gremlin-basierte Graphdatenbanken werden von ent ORM unterstützt
Beego ORM AdapterRMCasbin✅MySQL, PostgreSQL, Sqlite3 werden von Beego ORM unterstützt
SQLX-AdapterRM@memwey✅MySQL, PostgreSQL, SQLite, Oracle werden von SQLX unterstützt
Sqlx-AdapterSQL@Blank-Xu✅MySQL, PostgreSQL, SQL Server, SQLite3 werden in Master Branch unterstützt und Oracle wird in Orakel Branch von sqlx unterstützt
GF ORM AdapterRM@vance-liu✅MySQL, SQLite, PostgreSQL, Oracle, SQL Server werden von GoFrame ORM unterstützt
GoFrame ORM AdapterRM@kotlin2018✅MySQL, SQLite, PostgreSQL, Oracle, SQL Server werden von GoFrame ORM unterstützt
Gefilterter PostgreSQL-AdapterSQLCasbin✅Für PostgreSQL
Gefilterter pgx-AdapterSQL@pckhoi✅PostgreSQL wird von pgx unterstützt
PostgreSQL-AdapterSQL@cychiuae✅Für PostgreSQL
RQLite-AdapterSQLEDOMO-Systeme✅Für RQLite
MongoDB AdapterNoSQLCasbin✅Für MongoDB basierend auf MongoDB Go Treiber
RethinkDB AdapterNoSQL@adityapandey9✅Für RethinkDB
Kassandra-AdapterNoSQLCasbin❌Für Apache Cassandra DB
DynamoDB AdapterNoSQLHOOQ❌Für Amazon DynamoDB
DynacasbinNoSQLNewbMiao✅Für Amazon DynamoDB
ArangoDB AdapterNoSQL@adamwasila✅Für ArangoDB
Amazon S3 AdapterWolkeLösung❌Für Minio und Amazon S3
Azure Kosmos DB AdapterWolke@Spacycodierer✅Für Microsoft Azure Cosmos DB
GCP Firestore AdapterWolke@reedom❌Für Google Cloud Plattform-Firestore
GCP Cloud-SpeicheradapterWolkequrami❌Für Google Cloud Platform Cloud Storage
GCP Cloud Spanner AdapterWolke@blumenight✅Für Google Cloud Plattform Cloud Spanner
KonsumadapterKV Shop@ankitm123❌Für HashiCorp Verbrauch
Redis-Adapter (Redigo)KV ShopCasbin✅Für Redis
Redis Adapter (go-redis)KV Shop@mlsen✅Für Redis
Etcd-AdapterKV Shop@sebastianliu❌Für etcd
BoltDB AdapterKV Shop@speza✅Für Bolt
Bolt AdapterKV Shop@wirepair❌Für Bolt
BadgerDB AdapterKV Shop@inits✅Für BadgerDB
Protobuf AdapterStreamCasbin❌Für Google-Protokoll-Puffer
JSON-AdapterStringCasbin❌Für JSON
String-AdapterString@qiangmzsx❌Für Zeichenkette
HTTP-Datei-AdapterHTTP@h4ckedneko❌Für http.FileSystem
FileSystem AdapterDatei@naucon❌Für fs.FS und embed.FS
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
JDBC-AdapterJDBCCasbin✅MySQL, Oracle, PostgreSQL, DB2, Sybase, SQL Server werden von JDBC unterstützt
Ruhezustand AdapterRMCasbin✅Oracle, DB2, SQL Server, Sybase, MySQL, PostgreSQL werden von Hibernate unterstützt
MyBatis AdapterRMCasbin✅MySQL, Oracle, PostgreSQL, DB2, Sybase, SQL Server (das gleiche wie JDBC) werden von MyBatis 3 unterstützt
Hutool AdapterRM@mapleafgo✅MySQL, Oracle, PostgreSQL, SQLite werden von Hutool unterstützt
MongoDB AdapterNoSQLCasbin✅MongoDB wird unterstützt von mongodb-driver-sync
DynamoDB AdapterNoSQLCasbin❌Für Amazon DynamoDB
Redis-AdapterKV ShopCasbin✅Für Redis
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Gefilterter Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien mit Richtlinien-Untermengenunterstützung
String-Adapter (eingebaut)String@calebfaruki❌Für Zeichenkette
Einfacher AdapterNatives ORMCasbin✅pg, mysql, mysql2, sqlite3, oracledb, mssql werden vom Adapter selbst unterstützt
Sequelize-AdapterRMCasbin✅MySQL, PostgreSQL, SQLite, Microsoft SQL Server werden von Sequelize unterstützt
Typ-ORM-AdapterRMCasbin✅MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL, MongoDB werden von TypeORM unterstützt
Prisma-AdapterRMCasbin✅MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, AWS Aurora, Azure SQL wird von Prisma unterstützt
Knex AdapterRM@sarneeh und knex✅MSSQL, MySQL, PostgreSQL, SQLite3, Oracle werden von Knex.js unterstützt
Beanstandung.js AdapterRM@willsoto✅MSSQL, MySQL, PostgreSQL, SQLite3, Oracle werden von Objection.js unterstützt
PostgreSQL Native AdapterSQL@touchifyapp✅PostgreSQL-Adapter mit Unterstützung für erweiterte Teilmengen-Subsets und verbesserten Leistungen, die mit KnotenpostgreSQL erstellt wurden.
Mongoose AdapterNoSQLelastisch.io und Kasbin✅MongoDB wird von Mongoose unterstützt
Mongoose Adapter (No-Transaction)NoSQLminhducck✅MongoDB wird von Mongoose unterstützt
Knoten MongoDB Nativer AdapterNoSQL@juicycleff✅Für Knoten MongoDB Native
DynamoDB AdapterNoSQL@fospitia✅Für Amazon DynamoDB
Couchbase-AdapterNoSQL@MarkMYoung✅Für Couchbase
Redis-AdapterKV ShopCasbin❌Für Redis
Redis-AdapterKV Shop@NandaKishorJeripothula❌Für Redis
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Datenbank-AdapterRMCasbin✅MySQL, PostgreSQL, SQLite, Microsoft SQL Server werden von Techone/Datenbank unterstützt
Zend Db AdapterRMCasbin✅MySQL, PostgreSQL, SQLite, Oracle, IBM DB2, Microsoft SQL Server, andere PDO-Treiber werden von zend-db unterstützt
Doktrin DBAL-Adapter (Empfehlung)RMCasbin✅Leistungsstarke Abstraktionsschicht für PHP-Datenbanken (DBAL) mit vielen Funktionen für Datenbankschema-Introspektion und -Management.
Medoo-AdapterRMCasbin✅Medoo ist ein leichtes PHP Datenbank Framework zur Beschleunigung der Entwicklung unterstützt alle SQL-Datenbanken, einschließlich MySQL, MSSQL, SQLite, MariaDB, PostgreSQL, Sybase, Oracle und mehr.
Laminas-db AdapterRMCasbin✅MySQL, PostgreSQL, Oracle, IBM DB2, Microsoft Sql Server, PDO, etc. werden unterstützt von laminas-db
Zend-db AdapterRMCasbin✅MySQL, PostgreSQL, Oracle, IBM DB2, Microsoft Sql Server, PDO, etc. werden unterstützt von zend-db
Redis-AdapterKV Shop@nsnake❌Für Redis
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
SQLAlchemy AdapterRMCasbin✅PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase werden von SQLAlchemy unterstützt
Async-Datenbank-AdapterRMsampingantech✅PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase werden von Datenbanken
Peewee-AdapterRM@shblhy✅PostgreSQL, MySQL, SQLite werden von Peewee unterstützt
MongoEngine-AdapterRM@zhangbailong945❌MongoDB wird von MongoEngine unterstützt
Pony ORM AdapterRM@drorvinkler✅MySQL, PostgreSQL, SQLite, Oracle, CockroachDB werden von Pony ORM unterstützt
Tortoise ORM AdapterRM@thearchitector✅PostgreSQL (>=9.4), MySQL, MariaDB und SQLite werden von Tortoise ORM unterstützt
Couchbase-AdapterNoSQLWissenschaftslogik✅ (ohne remove_filtered_policy())Für Couchbase
DynamoDB AdapterNoSQL@abqadeer✅Für DynamoDB
Pymongo-AdapterNoSQLCasbin❌MongoDB wird von Pymongo unterstützt
GCP Firebase-AdapterWolke@devrushi41✅Für Google Cloud Plattform Firebase
Async ormar AdapterORMsampingantech✅PostgreSQL, MySQL, SQLite, Oracle, Microsoft SQL Server, Firebird, Sybase are supported by ormar
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
EF-AdapterRMCasbin❌MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. werden unterstützt von Entity Framework 6
EFCore-AdapterRMCasbin✅MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. werden vom Entity Framework Core unterstützt
EFCore Adapter (.NET Core 5)RM@g4dvali✅MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle, DB2, etc. werden vom Entity Framework Core unterstützt
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Diesel-AdapterRMCasbin✅SQLite, PostgreSQL, MySQL werden von Diesel unterstützt
Sqlx-AdapterRMCasbin✅PostgreSQL, MySQL wird von Sqlx mit vollständig asynchroner Operation unterstützt
SeaORM-AdapterRMlingdu1234✅PostgreSQL, MySQL wird vom SeaORM mit vollständig asynchroner Operation unterstützt
JSON-AdapterStringCasbin✅Für JSON
YAML-AdapterStringCasbin✅Für YAML
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Sequel-AdapterRMCasbinRuby✅ADO, Amalgalite, IBM_DB, JDBC, MySQL, Mysql2, ODBC, Oracle, PostgreSQL, SQLAnywhere, SQLite3 und TinyTDS werden von Sequel unterstützt
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Speicheradapter (eingebaut)SpeicherCasbin❌Für Speicher
Flüssiger AdapterRMCasbin✅PostgreSQL, SQLite, MySQL, MongoDB werden von fließend unterstützt
AdapterTypAutorAutoSaveBeschreibung
Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien
Gefilterter Datei-Adapter (eingebaut)DateiCasbin❌Für .CSV (Comma-Separated Values) Dateien mit Richtlinien-Untermengenunterstützung
LuaSQL-AdapterRMCasbin✅MySQL, PostgreSQL, SQLite3 werden von LuaSQL unterstützt
4DaysORM-AdapterRMCasbin✅MySQL, SQLite3 werden von 4DaysORM unterstützt
note
  1. Wenn casbin.NewEnforcer() mit einem expliziten oder impliziten Adapter aufgerufen wird, wird die Richtlinie automatisch geladen.
  2. Sie können e.LoadPolicy() aufrufen, um die Richtlinien-Regeln aus dem Speicher neu zu laden.
  3. Wenn der Adapter die Auto-Speichern Funktion nicht unterstützt, Die Richtlinien-Regeln können beim Hinzufügen oder Entfernen von Richtlinien nicht automatisch wieder in den Speicher gespeichert werden. Sie müssen SavePolicy() manuell aufrufen, um alle Regeln zu speichern.

Beispiele

Hier finden Sie einige Beispiele:

Datei-Adapter (eingebaut)

Unten wird gezeigt, wie man einen Erzwinger aus dem eingebauten Datei-Adapter initialisiert:

Go
PHP
Rust
import "github.com/casbin/casbin"

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

$e = new Enforcer('examples/basic_model.conf', 'examples/basic_policy.csv');
verwenden Sie casbin::prelude::*;

let mut e = Enforcer::new("examples/basic_model.conf", "examples/basic_policy.csv").await?;

Dies ist das gleiche mit:

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)
Casbin\Enforcer;
Casbin\Persist\Adapters\FileAdapter;

$a = new FileAdapter('examples/basic_policy.csv');
$e = new Enforcer('examples/basic_model.conf', $a);
verwenden Sie casbin::prelude::*;

lassen Sie einen = FileAdapter::new("examples/basic_policy.csv");
let e = Enforcer::new("examples/basic_model.conf", a).await?;

MySQL adapter

Im Folgenden wird gezeigt, wie ein Durchsetzer aus der MySQL-Datenbank initialisiert wird. es verbindet sich mit einer MySQL DB auf 127.0.0.1:3306 mit einem root-und einem leeren Passwort.

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
// Stellen Sie sicher, dass Sie die Funktion `mysql`

aktivieren::prelude::*;
verwenden Sie diesel_adapter::{ConnOptions, DieselAdapter};

lassen Sie mut conn_opts = ConnOptions::default();
conn_opts
. et_hostname("127.0.0.1")
. et_port(3306)
.set_host("127.0.0.1:3306") // Hostname, Port config
.set_database("casbin")
überschreiben. 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);

Verwende deinen eigenen Speicheradapter

Du kannst deinen eigenen Adapter verwenden wie unten:

import (
    "github.com/casbin/casbin"
    "github.com/your-username/your-repo"

 )

a := yourpackage.NewAdapter(params)
e := casbin.NewEnforcer("examples/basic_model.conf", a)

Zwischen verschiedenen Adaptern migrieren/konvertieren

If you want to convert adapter from A to B, you can do like this:

  1. Richtlinien von A in den Speicher laden
   e, _ := NewEnforcer(m, A)

oder

e.SetAdapter(A)
e.LoadPolicy()
  1. konvertieren Sie Ihren Adapter von A nach B

    e.SetAdapter(B)
    
  2. Speichere Richtlinie aus dem Speicher in B

    e. oadPolicy()
    

Lade/Speichern zur Laufzeit

Sie können auch das Modell neu laden die Richtlinie neu laden oder die Richtlinie nach der Initialisierung speichern:

// Das Modell aus der CONF-Datei neu laden.
e.LoadModel()

// Richtlinien aus der Datei/Datenbank neu laden.
e.LoadPolicy()

// Speichere die aktuelle Richtlinie (in der Regel nach der Änderung mit der Casbin API) zurück in die Datei/Datenbank.
e.SavePolicy()

AutoSave

Es gibt eine Funktion namens Auto-Speichern für Adapter. Wenn ein Adapter Auto-Speichern unterstützt, es bedeutet, dass es unterstützen kann, dem Speicher eine einzige Richtlinien-Regel hinzuzufügen oder eine einzige Richtlinien-Regel aus dem Speicher zu entfernen. Dies ist anders als SavePolicy(), da letztere alle Richtlinien-Regeln im Speicher löschen und alle Richtlinien-Regeln von Casbin erzwungen in die Speicherung speichern. Es könnte also zu Problemen bei der Leistung kommen, wenn die Anzahl der politischen Regeln groß ist.

Wenn der Adapter Auto-Speichernunterstützt, können Sie diese Option über Enforcer.EnableAutoSave() ändern. Die Option ist standardmäßig aktiviert (wenn der Adapter es unterstützt).

note
  1. Die Funktion Auto-Speichern ist optional. Ein Adapter kann wählen, ob er implementiert wird oder nicht.
  2. Auto-Speichern funktioniert nur für einen Casbin-Durchsetzer wenn der Adapter, den der Durchsetzer verwendet, dies unterstützt.
  3. Sehen Sie sich die Spalte AutoSave in der oben genannten Adapterliste an, um zu sehen, ob Auto-Speichern von einem Adapter unterstützt wird.

Hier ist ein Beispiel für die Verwendung von Auto-Speichern:

import (
    "github.com/casbin/casbin"
    "github.com/casbin/xorm-adapter"
    _ "github.com/go-sql-driver/mysql"
)

// Standardmäßig ist die Option AutoSave für einen Enforcer aktiviert.
a := xormadapter.NewAdapter("mysql", "mysql_username:mysql_password@tcp(127.0.0.1:3306)/")
e := casbin.NewEnforcer("examples/basic_model.conf", a)

// AutoSave Option deaktivieren.
e.EnableAutoSave(false)

// Weil AutoSave deaktiviert ist, die Änderung der Richtlinien wirkt sich nur auf die Richtlinie in Casbin durchsetzer,
// sie wirkt sich nicht auf die Richtlinien im Speicher.
e.AddPolicy(...)
e.RemovePolicy(...)

// Automatische Speicherung aktivieren.
e.EnableAutoSave(true)

// Weil AutoSave aktiviert ist, die Änderung der Richtlinien betrifft nicht nur die Richtlinien in Casbin Durchsetzer,
// sondern auch die Richtlinien im Speicher.
e.AddPolicy(...)
e.RemovePolicy(...)

Weitere Beispiele finden Sie hier: https://github.com/casbin/xorm-adapter/blob/master/adapter_test.go

Wie man einen Adapter schreibt

Alle Adapter sollten die Adapter Schnittstelle implementieren, indem mindestens zwei obligatorische Methoden angegeben werden:LoadPolicy(Modellmodell). odel) Fehler und SavePolicy(model model.Model).

Die anderen drei Funktionen sind optional. Sie sollten implementiert werden, wenn der Adapter die Auto-Save Funktion unterstützt.

MethodeTypBeschreibung
LoadPolicy()mandatoryLade alle Regeln aus dem Speicher
SavePolicy()mandatoryAlle Richtlinien-Regeln im Speicher speichern
AddPolicy()optionalRichtlinien-Regel zum Speicher hinzufügen
RemovePolicy()optionalEine Richtlinien-Regel vom Speicher entfernen
FilteredPolicy() entfernenoptionalRegeln, die dem Filter entsprechen, vom Speicher entfernen
note

Wenn ein Adapter Auto-Speichernnicht unterstützt, sollte er eine leere Implementierung für die drei optionalen Funktionen bereitstellen. Hier ist ein Beispiel für Golang:

// AddPolicy fügt dem Speicher eine Richtlinien-Regel hinzu.
func (a *Adapter) AddPolicy(sec string, ptype string, rule []string) error {
    return errors. ew("nicht implementiert")
}



 // Entfernt eine Richtlinien-Regel vom Speicher.
func (a *Adapter) removePolicy(sec string, ptype string, rule []string) error {
    return errors. ew("nicht implementiert")
}



 // Entfernt Richtlinien-Regeln, die mit dem Filter übereinstimmen, vom Speicher entfernt.
func (a *Adapter) removeFilteredPolicy(sec string, ptype string, fieldIndex int, fieldValues ...string) error {
    return errors.New("not implemented")
}

Beim Aufruf dieser drei optionalen Funktionen wird der nicht implementierte Fehler ignoriert.

Es gibt Details, wie man einen Adapter schreibt.

  • Datenstruktur. Adapter should support reading at least six columns.
  • Datenbank-Name. Der Standard-Datenbankname sollte casbin sein.
  • Tabellenname. Der Standard-Tabellenname sollte casbin_rule sein.
  • Ptype Spalte. Name dieser Spalte sollte ptype anstelle von p_type oder Ptype sein.
  • Tabellendefinition sollte (id int primary keyy, ptype varchar, v0 varchar, v1 varchar, v2 varchar, v3 varchar, v4 varchar, v5 varchar) sein.
  • Der eindeutige Schlüsselindex sollte auf Spalten ptype,v0,v1,v2,v3,v4,v5 gebaut werden.
  • LoadFilteredPolicy benötigt einen Filter als Parameter. Der Filter sollte so etwas sein. json { "p":[ [ "alice" ], [ "bob" ] ], "g":[ "", "book_group" ], [ "", "pen_group" ] ], "g2":[ [ "alice" ] ] }

Wer ist für die Erstellung der Datenbank verantwortlich?

Als Konvent der Adapter sollte in der Lage sein, automatisch eine Datenbank mit dem Namen casbin zu erstellen, falls sie nicht vorhanden ist und sie für die Speicherung von Richtlinien verwenden. Bitte verwenden Sie den Xorm-Adapter als Referenzimplementierung: https://github.com/casbin/xorm-adapter

← EnforcersBeobachter →
  • Unterstützte Adapter
  • Beispiele
    • Datei-Adapter (eingebaut)
    • MySQL adapter
  • Verwende deinen eigenen Speicheradapter
  • Zwischen verschiedenen Adaptern migrieren/konvertieren
  • Lade/Speichern zur Laufzeit
  • AutoSave
    • Wie man einen Adapter schreibt
    • Wer ist für die Erstellung der Datenbank verantwortlich?
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