Zum Hauptinhalt springen

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:)

BeobachterTypAutorBeschreibung
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExKV ShopCasbinWatcherEx for Redis
Redis-BeobachterKV Shop@billcobblerBeobachter für Redis
Etcd-BeobachterKV ShopCasbinBeobachter für etcd
TiKV-BeobachterKV ShopCasbinBeobachter für TiKV
Kafka-BeobachterNachrichtensystem@wgarunapBeobachter für Apache Kafka
NATS-BeobachterNachrichtensystemLösungBeobachter für NATS
ZooKeeper BeobachterNachrichtensystemGrepsrBeobachter für Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryNachrichtensystem@rusenaskWatcher basierend auf Go Cloud Dev Kit das mit führenden Cloud-Anbietern und selbst gehosteter Infrastruktur arbeitet
RaketenbeobachterNachrichtensystem@fmyxyzBeobachter für Apache RocketMQ

WatcherEx

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

Verglichen mit Watcher Schnittstelle kann WatcherEx unterscheiden, welche Art von Update-Aktion empfangen wird, z. ., AddPolicy und RemovePolicy.

WatcherEx Apis:

APIBeschreibung
SetUpdateCallback(func(string)) errorSetUpdateCallback sets the callback function that the watcher will call, when the policy in DB has been changed by other instances. Ein klassischer Callback ist Enforcer.LoadPolicy().
Update() errorUpdate calls the update callback of other instances to synchronize their policy. Es wird normalerweise nach Änderung der Richtlinien in DB aufgerufen, wie 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. 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 calls the update callback of other instances to synchronize their policy. Es wird aufgerufen, nachdem eine Richtlinie von Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() und Enforcer.RemoveNamedGroupingPolicy() entfernt wird.
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. Es wird nach Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() und Enforcer.RemoveFilteredGroupingPolicy() aufgerufen.
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy calls the update callback of other instances to synchronize their policy. Es wird nach Enforcer.SavePolicy() aufgerufen
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies calls the update callback of other instances to synchronize their policy. Es wird nach Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() und Enforcer.AddNamedGroupingPolicies() aufgerufen.
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. Es wird nach Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() und Enforcer.RemoveNamedGroupingPolicies().