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
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');
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.
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
Die Beispielrichtlinie des ACL-Modells lautet wie folgt:
p, alice, data1, read p, bob, data2, write
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
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

Die Auswahl eines Docker-Images für Node mag trivial erscheinen, aber die Größe und potenziellen Schwachstellen des Images können erhebliche Auswirkungen auf Ihren CI/CD-Prozess und Ihre Sicherheit haben. Wie wählen wir also das beste Node.js-Docker-Image aus?

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Node 19 wurde offiziell veröffentlicht. Dieser Artikel wird Ihnen eine detaillierte Erklärung der 6 Hauptfunktionen von Node.js 19 geben. Ich hoffe, er wird Ihnen hilfreich sein!

Wie führt Node.js GC (Garbage Collection) durch? Der folgende Artikel führt Sie durch.

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

Der Grund, warum der Knoten den Befehl npm nicht verwenden kann, liegt darin, dass die Umgebungsvariablen nicht richtig konfiguriert sind. Die Lösung ist: 1. Öffnen Sie „Systemeigenschaften“ 2. Suchen Sie nach „Umgebungsvariablen“ -> „Systemvariablen“ und bearbeiten Sie dann die Umgebung Variablen; 3. Suchen Sie den Speicherort des NodeJS-Ordners. 4. Klicken Sie auf „OK“.
