Heim > Web-Frontend > js-Tutorial > Hauptteil

Erfahren Sie mehr über Node.js Casbin

青灯夜游
Freigeben: 2020-08-31 10:02:17
nach vorne
2793 Leute haben es durchsucht

Erfahren Sie mehr über Node.js Casbin

【Video-Tutorial-Empfehlung: nodejs-Tutorial

Übersicht

Casbin ist ein leistungsstarkes und effizientes Open-Source-Zugriffskontroll-Framework, und sein Berechtigungsverwaltungsmechanismus unterstützt mehrere Zugriffskontrollmodelle.

Was ist Casbin?

Casbin kann:

  • Benutzerdefiniertes Anfrageformat unterstützen, das Standardanfrageformat ist {Betreff, Objekt, Aktion}.
  • Es verfügt über zwei Kernkonzepte: Modell und Richtlinie für das Zugriffskontrollmodell.
  • Unterstützt die mehrstufige Rollenvererbung in RBAC. Nicht nur Subjekte können Rollen haben, sondern auch Ressourcen können Rollen haben.
  • Unterstützt Superuser wie Root oder Administrator, die auf alle Ressourcen zugreifen können, ohne durch Autorisierungsrichtlinien eingeschränkt zu werden.
  • Unterstützt eine Vielzahl integrierter Operatoren, wie z. B. keyMatch, um die Verwaltung pfadbasierter Ressourcen zu erleichtern, z. B. /foo/bar kann auf /foo* abgebildet werden.

Casbin kann nicht:

  • Identitätsauthentifizierung (dh Überprüfung des Benutzernamens und des Kennworts des Benutzers). Casbin ist nur für die Zugriffskontrolle verantwortlich. Es sollten andere spezialisierte Komponenten für die Identitätsauthentifizierung verantwortlich sein, und dann sollte Casbin die Zugriffskontrolle durchführen. Die beiden arbeiten zusammen.
  • Benutzerliste oder Rollenliste verwalten. Casbin ist der Ansicht, dass es angemessener ist, dass das Projekt selbst die Benutzer- und Rollenlisten verwaltet. Benutzer haben normalerweise ihre Passwörter, Casbin ist jedoch nicht als Container zum Speichern von Passwörtern konzipiert. Stattdessen wird die Zuordnungsbeziehung zwischen Benutzern und Rollen im RBAC-Schema gespeichert.

Dokumentation

casbin.org/docs/en/overview

Installation

# NPMnpm install casbin --save# Yarnyarn add casbin
Nach dem Login kopieren

Erste Schritte

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');
Nach dem Login kopieren

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 {
  // 拒绝请求,显示错误}
Nach dem Login kopieren

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');
Nach dem Login kopieren

Weitere Informationen finden Sie unter Management API und RBAC API Verwendungsmöglichkeiten.

Wie es funktioniert

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
Nach dem Login kopieren

Die Beispielrichtlinie des ACL-Modells lautet wie folgt:

p, alice, data1, read
p, bob, data2, write
Nach dem Login kopieren

Das bedeutet:

  • alice kann Daten lesen1
  • bob kann Daten2 schreiben
    Für eine zu lange einzeilige Konfiguration können Sie dies tun Übergeben Sie außerdem „Add ''“ am Ende, um die Zeile zu unterbrechen:
# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj \ 
  && r.act == p.act
Nach dem Login kopieren

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')
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage