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:
- Go
- Java
- Node.js
- Python
- .NET
- Ruby
- PHP
Watcher | Type | Author | Description |
---|---|---|---|
PostgreSQL WatcherEx | Database | @IguteChung | WatcherEx for PostgreSQL |
Redis WatcherEx | KV store | Casbin | WatcherEx for Redis |
Redis Watcher | KV store | @billcobbler | Watcher for Redis |
Etcd Watcher | KV store | Casbin | Watcher for etcd |
TiKV Watcher | KV store | Casbin | Watcher for TiKV |
Kafka Watcher | Messaging system | @wgarunap | Watcher for Apache Kafka |
NATS Watcher | Messaging system | Soluto | Watcher for NATS |
ZooKeeper Watcher | Messaging system | Grepsr | Watcher for Apache ZooKeeper |
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory | Messaging System | @rusenask | Watcher 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, InMemory | Messaging System | @bartventer | WatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure |
RocketMQ Watcher | Messaging system | @fmyxyz | Watcher for Apache RocketMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Etcd Adapter | KV store | @mapleafgo | Watcher for etcd |
Redis Watcher | KV store | Casbin | Watcher for Redis |
Lettuce-Based Redis Watcher | KV store | Casbin | Watcher for Redis based on Lettuce) |
Kafka Watcher | Messaging system | Casbin | Watcher for Apache Kafka |
Watcher | Type | Author | Description |
---|---|---|---|
Etcd Watcher | KV store | Casbin | Watcher for etcd |
Redis Watcher | KV store | Casbin | Watcher for Redis |
Pub/Sub Watcher | Messaging system | Casbin | Watcher for Google Cloud Pub/Sub |
MongoDB Change Streams Watcher | Database | Casbin | Watcher for MongoDB Change Streams |
Postgres Watcher | Database | @mcollina | Watcher for PostgreSQL |
Watcher | Type | Author | Description |
---|---|---|---|
Etcd Watcher | KV store | Casbin | Watcher for etcd |
Redis Watcher | KV store | Casbin | Watcher for Redis |
Redis Watcher | KV store | ScienceLogic | Watcher for Redis |
Redis Async Watcher | KV store | @kevinkelin | Watcher for Redis |
PostgreSQL Watcher | Database | Casbin | Watcher for PostgreSQL |
RabbitMQ Watcher | Messaging system | Casbin | Watcher for RabbitMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | @Sbou | Watcher for Redis |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | CasbinRuby | Watcher for Redis |
RabbitMQ Watcher | Messaging system | CasbinRuby | Watcher for RabbitMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | @Tinywan | Watcher for Redis |
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:
API | Beschreibung |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback 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() error | Update 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) error | UpdateForAddPolicy 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) error | UpdateForRemovePolicy 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) error | UpdateForRemoveFilteredPolicy 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) Fehler | UpdateForSavePolicy 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) Fehler | UpdateForAddPolicies 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) Fehler | UpdateForRemovePolicies 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(). |