Passer au contenu principal

Observateurs

Nous prenons en charge l'utilisation de systèmes de messagerie distribués comme etcd pour garder la cohérence entre plusieurs instances de contrôle de Casbin. Ainsi, nos utilisateurs peuvent utiliser simultanément plusieurs exécuteurs Casbin pour gérer un grand nombre de demandes de vérification des permissions.

Similaire aux adaptateurs de stockage stratégiques, nous ne plaçons pas de code de surveillance dans la bibliothèque principale. Tout support pour un nouveau système de messagerie devrait être mis en œuvre en tant que observateur. Une liste complète des observateurs de Casbin est fournie ci-dessous. Toute contribution de tierce partie sur un nouvel observateur est la bienvenue, s'il vous plaît nous en informer et je vais le mettre dans cette liste:)

ObservateurType de texteAuteurDescription
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExMagasin KVCasbinWatcherEx for Redis
Guetteur RedisMagasin KV@billcobblerObservateur pour Redis
Observateur EtcdMagasin KVCasbinObservateur pour etcd
Guetteur TiKVMagasin KVCasbinObservateur pour TiKV
Guet de KafkaSystème de messagerie@wgarunapObservateur pour Apache Kafka
Observateur NATSSystème de messagerieSolutionObservateur pour NATS
Guetteur ZooKeeperSystème de messagerieGrepsrObservateur pour Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemorySystème de messagerie@rusenaskWatcher basé sur Go Cloud Dev Kit qui fonctionne avec les principaux fournisseurs de cloud et les infrastructures auto-hébergées
Observateur de RocketMQSystème de messagerie@fmyxyzObservateur pour Apache RocketMQ

format@@0 WatcherEx

Afin de prendre en charge la synchronisation incrémentale entre plusieurs instances, nous fournissons l'interface WatcherEx. Nous espérons qu'il pourra notifier d'autres instances lorsque la politique changera, mais il n'y a actuellement aucune implémentation de WatcherEx. Nous vous recommandons d'utiliser le répartiteur pour y parvenir.

Comparé à l'interface Watcher , WatcherEx peut distinguer quel type d'action de mise à jour est reçu, e. ., AddPolicy et RemovePolicy.

Application WatcherEx :

APIDescription
SetUpdateCallback(func(string)) errorSetUpdateCallback sets the callback function that the watcher will call, when the policy in DB has been changed by other instances. Un callback classique est Enforcer.LoadPolicy().
Update() errorUpdate calls the update callback of other instances to synchronize their policy. Il est généralement appelé après avoir changé la politique dans DB, comme Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), etc.
Close()Close stops and releases the watcher, the callback function will not be called any more.
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy calls the update callback of other instances to synchronize their policy. Il est appelé après qu'une politique est ajoutée via Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() et Enforcer.AddNamedGroupingPolicy().
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUPdateForRemovePolicy calls the update callback of other instances to synchronize their policy. Il est appelé après qu'une politique est supprimée par Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() et Enforcer.RemoveNamedGroupingPolicy().
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. Il est appelé après Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() et Enforcer.RemoveFilteredNamedNamedPolicy().
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy calls the update callback of other instances to synchronize their policy. Il est appelé après Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies calls the update callback of other instances to synchronize their policy. Il est appelé après Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() et Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. Il est appelé après Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() et Enforcer.RemoveNamedGroupingPolicies().