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

Fonction

Fonctions dans les matchers

Vous pouvez même spécifier des fonctions dans un matcher pour le rendre plus puissant. Vous pouvez utiliser les fonctions intégrées ou spécifier votre propre fonction. Toutes les fonctions intégrées prennent un tel format (sauf keyGet et keyGet2 ) :

bool function_name(chaîne arg1, chaîne arg2)

Il retourne si arg1 correspond à arg2.

keyGet et keyGet2 retourneront la chaîne qui correspond à la carte joker et retourneront "" si rien ne correspondait.

Les fonctions intégrées supportées sont :

Fonctionarg1arg2Exemple
keyMatchun chemin URL comme /alice_data/resource1un chemin URL ou un motif * comme /alice_data/*keymatch_model.conf/keymatch_policy.csv
keyGetun chemin URL comme /alice_data/resource1un chemin URL ou un motif * comme /alice_data/*keyget_model.conf/keymatch_policy.csv
format@@0 keyMatch2un chemin URL comme /alice_data/resource1un chemin URL ou un motif : comme /alice_data/:resourcekeymatch2_model.conf/keymatch2_policy.csv
keyGet2un chemin URL comme /alice_data/resource1un chemin d'URL ou : modèle comme /alice_data/:resourcekeyget2_model.conf/keymatch2_policy.csv
format@@0 keyMatch3un chemin URL comme /alice_data/resource1un chemin URL ou un motif {} comme /alice_data/{resource}https://github.com/casbin/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L171-L196
format@@0 keyMatch4un chemin URL comme /alice_data/123/book/123un chemin URL ou un motif {} comme /alice_data/{id}/book/{id}https://github.com/casbin/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L208-L222
Correspondance regexetoute chaîne de caractèresun motif d'expression régulièrekeymatch_model.conf/keymatch_policy.csv
ipMatchune adresse IP comme 192.168.2.123une adresse IP ou un CIDR comme 192.168.2.0/24ipmatch_model.conf/ipmatch_policy.csv
globMatchun chemin semblable à un chemin comme /alice_data/resource1un modèle de glob comme /alice_data/*https://github.com/casbin/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L426-L466

Voir les détails pour les fonctions ci-dessus à : https://github.com/casbin/casbin/blob/master/util/builtin_operators_test.go

Comment ajouter une fonction personnalisée

Préparez d'abord votre fonction. Il prend plusieurs paramètres et retourne un bool:

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]
}

Ensuite enveloppez-le avec les types interface{}:

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

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

Enfin enregistrez la fonction auprès de l'agent de contrôle de Casbin:

e.AddFunction("my_func", KeyMatchFunc)

Maintenant, vous pouvez utiliser la fonction dans votre modèle CONF comme ceci :

[matchers]
m = r.sub == p.sub && my_func(r.obj, p.obj) && r.act == p.act
← EffetRBAC →
  • Fonctions dans les matchers
  • Comment ajouter une fonction personnalisée
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