Zum Hauptinhalt springen

Watchers

Wir unterstützen die Verwendung von verteilten Nachrichtensystemen wie etcd zur Aufrechterhaltung der Konsistenz zwischen mehreren Casbin Enforcer-Instanzen. Dies ermöglicht unseren Benutzern, gleichzeitig mehrere Casbin Enforcer zu verwenden, um eine große Anzahl von Berechtigungsprüfungsanfragen zu bearbeiten.

Ähnlich wie bei den Policy-Speicheradaptern, beinhaltet die Hauptbibliothek keinen Watcher-Code. Jede Unterstützung für ein neues Nachrichtensystem sollte als Watcher implementiert werden. Eine vollständige Liste der Casbin Watcher finden Sie unten. Wir begrüßen Beiträge von Dritten für einen neuen Watcher, bitte informieren Sie uns und wir werden ihn zu dieser Liste hinzufügen:

WatcherTypeAuthorDescription
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExKV storeCasbinWatcherEx for Redis
Redis WatcherKV store@billcobblerWatcher for Redis
Etcd WatcherKV storeCasbinWatcher for etcd
TiKV WatcherKV storeCasbinWatcher for TiKV
Kafka WatcherMessaging system@wgarunapWatcher for Apache Kafka
NATS WatcherMessaging systemSolutoWatcher for NATS
ZooKeeper WatcherMessaging systemGrepsrWatcher for Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@rusenaskWatcher based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@bartventerWatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ WatcherMessaging system@fmyxyzWatcher for Apache RocketMQ

WatcherEx

Um die inkrementelle Synchronisation zwischen mehreren Instanzen zu unterstützen, bieten wir die WatcherEx Schnittstelle an. Wir hoffen, dass es andere Instanzen benachrichtigen kann, wenn sich die Richtlinie ändert, aber derzeit gibt es keine Implementierung von WatcherEx. Wir empfehlen, dass Sie Dispatcher verwenden, um dies zu erreichen.

Im Vergleich zur Watcher Schnittstelle kann WatcherEx unterscheiden, welche Art von Update-Aktion empfangen wird, z.B. AddPolicy und RemovePolicy.

WatcherEx Apis:

APIBeschreibung
SetUpdateCallback(func(string)) errorSetUpdateCallback setzt die Callback-Funktion, die der Watcher aufrufen wird, wenn die Richtlinie in der DB von anderen Instanzen geändert wurde. Ein klassischer Callback ist Enforcer.LoadPolicy().
Update() errorUpdate ruft den Update-Callback anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird normalerweise aufgerufen, nachdem die Richtlinie in der DB geändert wurde, wie Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), usw.
Close()Close stoppt und gibt den Watcher frei, die Callback-Funktion wird nicht mehr aufgerufen.
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy ruft den Update-Callback anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird aufgerufen, nachdem eine Richtlinie über Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() und Enforcer.AddNamedGroupingPolicy() hinzugefügt wurde.
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUpdateForRemovePolicy ruft den Update-Callback anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird aufgerufen, nachdem eine Richtlinie durch Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() und Enforcer.RemoveNamedGroupingPolicy() entfernt wurde.
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy ruft den Update-Callback anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird aufgerufen nach Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() und Enforcer.RemoveFilteredNamedGroupingPolicy().
UpdateForSavePolicy(model model.Model) FehlerUpdateForSavePolicy ruft die Update-Rückruffunktion anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird aufgerufen nach Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) FehlerUpdateForAddPolicies ruft die Update-Rückruffunktion anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird aufgerufen nach Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() und Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) FehlerUpdateForRemovePolicies ruft die Update-Rückruffunktion anderer Instanzen auf, um ihre Richtlinie zu synchronisieren. Es wird aufgerufen nach Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() und Enforcer.RemoveNamedGroupingPolicies().