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

›Modell

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

Funktion

Funktionen in Matchern

Sie können sogar Funktionen in einem Matcher angeben, um diese mächtiger zu machen. Sie können die eingebauten Funktionen verwenden oder Ihre eigene Funktion angeben. Alle eingebauten Funktionen verwenden ein solches Format (außer keyGet und keyGet2):

bool function_name(string arg1, string arg2)

Gibt zurück, ob arg1 arg2 entspricht.

keyGet und keyGet2 gibt den String zurück, der mit dem Platzhalter übereinstimmt, und gibt "" zurück, falls nichts übereinstimmt.

Die unterstützten Funktionen sind:

Funktionarg1arg2Beispiel
keymatchein URL-Pfad wie /alice_data/resource1ein URL-Pfad oder ein * Muster wie /alice_data/*keymatch_model.conf/keymatch_policy.csv
keyGetein URL-Pfad wie /alice_data/resource1ein URL-Pfad oder ein * Muster wie /alice_data/*keyget_model.conf/keymatch_policy.csv
keyMatch2ein URL-Pfad wie /alice_data/resource1ein URL-Pfad oder ein : Muster wie /alice_data/:resourcekeymatch2_model.conf/keymatch2_policy.csv
keyGet2ein URL-Pfad wie /alice_data/resource1ein URL-Pfad oder : Muster wie /alice_data/:resourcekeyget2_model.conf/keymatch2_policy.csv
keyMatch3ein URL-Pfad wie /alice_data/resource1ein URL-Pfad oder ein {} Muster wie /alice_data/{resource}https://github.com/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L171-L196
keyMatch4ein URL-Pfad wie /alice_data/123/book/123ein URL-Pfad oder ein {} Muster wie /alice_data/{id}/book/{id}https://de.github.com/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L208-L222
regexMatchjede Zeichenketteein Muster für reguläre Ausdrückekeymatch_model.conf/keymatch_policy.csv
ipMatcheine IP-Adresse wie 192.168.2.123eine IP-Adresse oder ein CIDR wie 192.168.2.0/24ipmatch_model.conf/ipmatch_policy.csv
globMatchein pfadähnlicher Pfad wie /alice_data/resource1ein Glob-Muster wie /alice_data/*https://github.com/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L426-L466

Details zu obigen Funktionen finden Sie unter: https://github.com/casbin/casbin/blob/master/util/builtin_operators_test.go

So fügen Sie eine benutzerdefinierte Funktion hinzu

Bereiten Sie zuerst Ihre Funktion vor. Es benötigt mehrere Parameter und gibt einen Bool zurück:

func KeyMatch(key1 string, key2 string) bool {
    i := strings. ndex(key2, "*")
    if i == -1 {
        return key1 == key2
    }

    if len(key1) > i {
        return key1[:i] == key2[:i]
    }
    return key1 == key2[:i]
}

Dann wickeln Sie es mit Schnittstelle{} Typen:

func KeyMatchFunc(args ...interface{}) {
    name1 := args[0].(string)
    name2 := args[1].(string)

    .(string) 

 return (bool)(KeyMatch(name1, name2)), nil
}

Endlich registrieren Sie die Funktion beim Casbin Enforcer:

e.AddFunction("my_func", KeyMatchFunc)

Jetzt können Sie die Funktion in Ihrem Modell CONF wie folgt verwenden:

[matchers]
m = r.sub == p.sub && my_func(r.obj, p.obj) && r.act == p.act
← EffektorRBAC →
  • Funktionen in Matchern
  • So fügen Sie eine benutzerdefinierte Funktion hinzu
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