Heim >Web-Frontend >js-Tutorial >Erfahren Sie mehr über Node.js Casbin
【Video-Tutorial-Empfehlung: nodejs-Tutorial】
Casbin ist ein leistungsstarkes und effizientes Open-Source-Zugriffskontroll-Framework, und sein Berechtigungsverwaltungsmechanismus unterstützt mehrere Zugriffskontrollmodelle.
Casbin kann:
Casbin kann nicht:
casbin.org/docs/en/overview
# NPMnpm install casbin --save# Yarnyarn add casbin
Erstellen eines Casbin Enforcer erfordert eine Modelldatei und eine Richtliniendatei als Parameter :
import { newEnforcer } from 'casbin';const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');
Sie können den Enforcer auch mit der Richtlinie in der Datenbank statt mit der Datei initialisieren, siehe Adapter für Details.
const sub = 'alice'; // 想要访问资源的用户。const obj = 'data1'; // 将要访问的资源。const act = 'read'; // 用户对资源执行的操作。const res = await enforcer.enforce(sub, obj, act);if (res) { // 允许 alice 读取数据1} else { // 拒绝请求,显示错误}
Neben statischen Richtliniendateien bietet node-casbin
auch eine API für die Berechtigungsverwaltung zur Laufzeit. So können Sie beispielsweise alle Rollen einem Benutzer wie folgt zuweisen:
const roles = await enforcer.getRolesForUser('alice');
Weitere Informationen finden Sie unter Management API und RBAC API Verwendungsmöglichkeiten.
In Casbin wird das Zugriffskontrollmodell in eine Datei abstrahiert, die auf PERM (Policy, Effect, Request, Matcher) basiert. Daher ist das Ändern oder Aktualisieren des Autorisierungsmechanismus eines Projekts so einfach wie das Ändern der Konfiguration. Sie können Ihr eigenes Zugangskontrollmodell anpassen, indem Sie die verfügbaren Modelle kombinieren. Beispielsweise können Sie RBAC-Rollen und ABAC-Attribute in einem Modell haben und einen Satz Richtlinienregeln gemeinsam nutzen.
Das grundlegendste und einfachste Modell in Casbin ist ACL. Die Modell-CONF in ACL lautet:
# Request definition[request_definition]r = sub, obj, act # Policy definition[policy_definition]p = sub, obj, act # Policy effect[policy_effect]e = some(where (p.eft == allow))# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
Die Beispielrichtlinie des ACL-Modells lautet wie folgt:
p, alice, data1, read p, bob, data2, write
Das bedeutet:
# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj \ && r.act == p.act
Darüber hinaus können Sie für ABAC die folgende (noch nicht von jCasbin und Node-Casbin unterstützte) Operation in der Casbin-Golang-Version ausprobieren:
# Matchers[matchers]m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')
Sie sollten jedoch sicherstellen, dass die Länge des Arrays größer als 1 ist, sonst kommt es zu Panik.
Für weitere Operationen können Sie sich govaluate ansehen.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt vonErfahren Sie mehr über Node.js Casbin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!