Beobachter
Wir unterstützen verteilte Messaging-Systeme wie etcd um die Konsistenz zwischen mehreren Casbin-Vollstreckungsinstanzen zu gewährleisten. So können unsere Benutzer gleichzeitig mehrere Casbin-Durchsetzer verwenden, um eine große Anzahl von Berechtigungsprüfungen zu bearbeiten.
Ähnlich wie bei Richtlinien-Speicheradaptern legen wir Watcher-Code nicht in die Hauptbibliothek. Jede Unterstützung für ein neues Messaging-System sollte als Beobachter implementiert werden. Eine vollständige Liste der Casbin-Beobachter finden Sie wie unten. Jeder Beitrag von Drittanbietern zu einem neuen Beobachter ist willkommen, bitte informieren Sie uns und ich werde ihn in diese Liste setzen:)
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Beobachter | KV Shop | Casbin | Beobachter für etcd |
Redis-Beobachter | KV Shop | Casbin | Beobachter für Redis |
Redis-Beobachter | KV Shop | @billcobbler | Beobachter für Redis |
TiKV-Beobachter | KV Shop | Casbin | Beobachter für TiKV |
Kafka-Beobachter | Nachrichtensystem | @wgarunap | Beobachter für Apache Kafka |
NATS-Beobachter | Nachrichtensystem | Lösung | Beobachter für NATS |
ZooKeeper Beobachter | Nachrichtensystem | Grepsr | Beobachter für Apache ZooKeeper |
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory | Nachrichtensystem | @rusenask | Watcher basierend auf Go Cloud Dev Kit das mit führenden Cloud-Anbietern und selbst gehosteter Infrastruktur arbeitet |
Raketenbeobachter | Nachrichtensystem | @fmyxyz | Beobachter für Apache RocketMQ |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Adapter | KV Shop | @mapleafgo | Beobachter für etcd |
Redis-Beobachter | KV Shop | Casbin | Beobachter für Redis |
Kafka-Beobachter | Nachrichtensystem | Casbin | Beobachter für Apache Kafka |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Beobachter | KV Shop | Casbin | Beobachter für etcd |
Redis-Beobachter | KV Shop | Casbin | Beobachter für Redis |
Öffentlich/Sub-Beobachter | Nachrichtensystem | Casbin | Beobachter für Google Cloud Pub/Sub |
Postgre-Beobachter | Datenbank | Matteo Collina | Beobachter für PostgreSQL |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV Shop | Wissenschaftslogik | Beobachter für Redis |
PostgreSQL-Beobachter | Datenbank | Casbin | Beobachter für PostgreSQL |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV Shop | @Sbou | Beobachter für Redis |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV Shop | CasbinRuby | Beobachter für Redis |
RabbitMQ-Beobachter | Nachrichtensystem | CasbinRuby | Beobachter für RabbitMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | Tinywan | Watcher for Redis |
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(). |