Heim Web-Frontend js-Tutorial Erfahren Sie mehr über Node.js Casbin

Erfahren Sie mehr über Node.js Casbin

Aug 19, 2020 am 10:16 AM
node.js

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!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein Artikel über Speichersteuerung in Node Ein Artikel über Speichersteuerung in Node Apr 26, 2023 pm 05:37 PM

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

Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Mar 29, 2023 pm 06:02 PM

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!

Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Dec 13, 2022 pm 08:00 PM

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?

Lassen Sie uns ausführlich über das File-Modul in Node sprechen Lassen Sie uns ausführlich über das File-Modul in Node sprechen Apr 24, 2023 pm 05:49 PM

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.js 19 ist offiziell veröffentlicht, lassen Sie uns über seine 6 Hauptfunktionen sprechen! Node.js 19 ist offiziell veröffentlicht, lassen Sie uns über seine 6 Hauptfunktionen sprechen! Nov 16, 2022 pm 08:34 PM

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!

Lassen Sie uns über den GC-Mechanismus (Garbage Collection) in Node.js sprechen Lassen Sie uns über den GC-Mechanismus (Garbage Collection) in Node.js sprechen Nov 29, 2022 pm 08:44 PM

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

Lassen Sie uns über die Ereignisschleife in Node sprechen Lassen Sie uns über die Ereignisschleife in Node sprechen Apr 11, 2023 pm 07:08 PM

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!

Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Feb 08, 2023 am 10:09 AM

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“.

See all articles