Casbin

Casbin

  • Documents
  • API
  • Editeur
  • Plugins IDE
  • Authentification unique (SSO)
  • Forums
  • Aide
  • Blogue
  • Pricing
  • Contact Sales
  • Languages iconFrançais
    • English
    • 中文
    • 한국어
    • Русский
    • Deutsch
    • 日本語
    • Aider à traduire
  • GitHub

›Modélisation

Les Bases

  • Aperçu
  • Commencer
  • Comment ça marche
  • Tutoriels

Modélisation

  • Modèles pris en charge
  • Syntaxe pour les modèles
  • Effet
  • Fonction
  • RBAC
  • RBAC avec motif
  • RBAC avec domaines
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Modèle de priorité
  • Super Admin

Stockage

  • Stockage du modèle
  • Stockage de la politique
  • Chargement du sous-ensemble de la politique

Extensions

  • Enforcers
  • Adaptateurs
  • Observateurs
  • Répartiteurs
  • Responsables des rôles
  • Moyens
  • Moyens GraphQL
  • Moyens natifs du Cloud

API

  • Aperçu de l'API
  • API de gestion
  • RBAC API
  • RBAC avec API Domains
  • API RoleManager
  • Autorisations des données

Utilisation avancée

  • Multi-threads
  • Benchmarks
  • Optimisation des performances
  • Autorisation de Kubernetes
  • Autorisation de maillage de service par l'envoyé

Gestion

  • Portail Admin
  • Service Casbin
  • Gestion des logs et des erreurs
  • Utilisation du frontend

Editeur

  • Éditeur en ligne
  • Plugins IDE

En savoir plus

  • Nos Adopteurs
  • Contribuer
  • Politique de confidentialité
  • Conditions d'utilisation
Translate

Modèle de priorité

Casbin supporte les politiques de chargement avec priorité.

Politique de charge avec priorité implicitement

C'est assez simple, l'ordre détermine la priorité, la politique apparue plus tôt a une plus grande priorité.

model.conf :

[policy_effect]
e = priorité(p.eft) || nier

Charger la politique avec la priorité explicite

Voir aussi : casbin#550

Le nom du jeton de priorité dans la définition de la politique doit être « priorité », et la plus petite valeur de priorité aura une plus grande priorité. S'il y a des caractères non numériques dans la priorité, ce sera dans le dernier, plutôt que de lancer une erreur. Maintenant, la priorité explicite ne prend en charge que AddPolicy & AddPolicies, si UpdatePolicy a été appelée, vous ne devriez pas changer l'attribut prioritaire.

model.conf :

[request_definition]
r = sub, obj, act

[policy_definition]
p = priority, sub, obj, act, eft

[role_definition]
g = _, _

[policy_effect]
e = priority(p.eft) || deny

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

Politique.csv

p, 10, data1_deny_group, data1, read, deny
p, 10, data1_deny_group, data1, write, deny
p, 10, data2_allow_group, data2, read, allow
p, 10, data2_allow_group, data2, write, autoriser


p, 1, alice, data1, write, allow
p, 1, alice, data1, read, allow
p, 1, bob, data2, read, deny

g, bob, data2_allow_group
g, alice, data1_deny_group

Requête:

alice, data1, write --> true // pour `p, 1, alice, data1, write, allow` a la plus haute priorité
bob, data2, read --> false
bob, data2, write --> true // for bob has role of `data2_allow_group` which has right to write data2, et il n'y a pas de politique de refus avec une priorité plus élevée 

Politique de charge avec priorité basée sur le rôle et la hiérarchie des utilisateurs

La structure héritée des rôles et des utilisateurs ne peut être que de multiples arborescences et non des graphiques. Si un utilisateur a plusieurs rôles, vous devez vous assurer que l'utilisateur a le même niveau dans différentes arborescences. Si deux rôles ont le même niveau, la politique (le rôle correspondant) est apparue plus tôt a une plus grande priorité. plus de détails voir aussi casbin#833casbin#831

model.conf :

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act, eft

[role_definition]
g = _, _

[policy_effect]
e = subjectPriority(p.eft) || deny

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act 

Politique.csv

p, root, data1, read, deny
p, admin, data1, read, deny

p, editor, data1, data1 lire, refuser
p, abonné, data1, read, deny

p, jane, data1, read, autoriser
p, alice, data1, read, allow

g, admin, root

g, editor, admin
g, abonné, admin

g, jane, éditeur
g, alice, abonné 

Requête:

jane, data1, read --> true // jane est en bas, donc la priorité est supérieure à l'éditeur, admin et racine
alice, data1, read --> true

La hiérarchie des rôles comme ceci:

role: root
 └─ role: admin
    ├─ role editor
    │  └─ user: jane
    │
    └─ role: subscriber
       └─ user: john

La priorité ressemble automatiquement à ceci:

Rôle : root # priorité automatique : 30
 <unk> ─ rôle : admin # priorité auto : 20
     ─ rôle : éditeur # priorité automatique : 10
     <unk> ─ rôle : abonné # priorité auto : 10
← ABACSuper Admin →
  • Politique de charge avec priorité implicitement
  • Charger la politique avec la priorité explicite
  • Politique de charge avec priorité basée sur le rôle et la hiérarchie des utilisateurs
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