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:)
Observateur | Type de texte | Auteur | Libellé |
---|---|---|---|
Observateur Etcd | Magasin KV | Casbin | Observateur pour etcd |
Guetteur Redis | Magasin KV | Casbin | Observateur pour Redis |
Guetteur Redis | Magasin KV | @billcobbler | Observateur pour Redis |
Guetteur TiKV | Magasin KV | Casbin | Observateur pour TiKV |
Guet de Kafka | Système de messagerie | @wgarunap | Observateur pour Apache Kafka |
Observateur NATS | Système de messagerie | Solution | Observateur pour NATS |
Guetteur ZooKeeper | Système de messagerie | Grepsr | Observateur pour Apache ZooKeeper |
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory | Système de messagerie | @rusenask | Watcher basé sur Go Cloud Dev Kit qui fonctionne avec les principaux fournisseurs de cloud et les infrastructures auto-hébergées |
Observateur de RocketMQ | Système de messagerie | @fmyxyz | Observateur pour Apache RocketMQ |
Observateur | Type de texte | Auteur | Libellé |
---|---|---|---|
Adaptateur Etcd | Magasin KV | @mapleafgo | Observateur pour etcd |
Guetteur Redis | Magasin KV | Casbin | Observateur pour Redis |
Guet de Kafka | Système de messagerie | Casbin | Observateur pour Apache Kafka |
Observateur | Type de texte | Auteur | Libellé |
---|---|---|---|
Observateur Etcd | Magasin KV | Casbin | Observateur pour etcd |
Guetteur Redis | Magasin KV | Casbin | Observateur pour Redis |
Pub/sous-observateur | Système de messagerie | Casbin | Observateur pour Google Cloud Pub/Sub |
Observateur de Postgres | Base de données | Matteo Collina | Observateur pour PostgreSQL |
Observateur | Type de texte | Auteur | Libellé |
---|---|---|---|
Guetteur Redis | Magasin KV | ScienceLogique | Observateur pour Redis |
Observateur PostgreSQL | Base de données | Casbin | Observateur pour PostgreSQL |
Observateur | Type de texte | Auteur | Libellé |
---|---|---|---|
Guetteur Redis | Magasin KV | @Sbou | Observateur pour Redis |
Observateur | Type de texte | Auteur | Libellé |
---|---|---|---|
Guetteur Redis | Magasin KV | CasbinRuby | Observateur pour Redis |
Observateur Lapin MQ | Système de messagerie | CasbinRuby | Observateur pour LapinsMQ |
Watcher | Type | Auteur | Description |
---|---|---|---|
Redis Watcher | KV store | Tinywan | Watcher for Redis |
format@@0 WatcherEx
In order to support incremental synchronization between multiple instances, we provide the WatcherEx
interface. We hope it can notify other instances when the policy changes, but there is currently no implementation of WatcherEx
. We recommend that you use dispatcher to achieve this.
Compared with Watcher
interface, WatcherEx
can distinguish what type of update action is received, e.g., AddPolicy
and RemovePolicy
.
WatcherEx Apis:
api | description |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback sets the callback function that the watcher will call, when the policy in DB has been changed by other instances. A classic callback is Enforcer.LoadPolicy(). |
Update() error | Update calls the update callback of other instances to synchronize their policy. It is usually called after changing the policy in DB, like 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) error | UpdateForAddPolicy calls the update callback of other instances to synchronize their policy. It is called after a policy is added via Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() and Enforcer.AddNamedGroupingPolicy(). |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UPdateForRemovePolicy calls the update callback of other instances to synchronize their policy. It is called after a policy is removed by Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() and Enforcer.RemoveNamedGroupingPolicy(). |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() and Enforcer.RemoveFilteredNamedGroupingPolicy(). |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies calls the update callback of other instances to synchronize their policy. It is called after Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() and Enforcer.AddNamedGroupingPolicies(). |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() and Enforcer.RemoveNamedGroupingPolicies(). |