Beobachter
We support the use of distributed messaging systems like etcd to maintain consistency between multiple Casbin enforcer instances. This allows our users to concurrently use multiple Casbin enforcers to handle a large number of permission checking requests.
Similar to policy storage adapters, we do not include watcher code in the main library. Jede Unterstützung für ein neues Messaging-System sollte als Beobachter implementiert werden. A complete list of Casbin watchers is provided below. We welcome any third-party contributions for a new watcher, please inform us and we will add it to this list:)
- Go
- Java
- Node.js
- Python
- .NET
- Ruby
- PHP
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
PostgreSQL WatcherEx | Database | @IguteChung | WatcherEx for PostgreSQL |
Redis WatcherEx | KV Shop | Casbin | WatcherEx for Redis |
Redis-Beobachter | KV Shop | @billcobbler | Beobachter für Redis |
Etcd-Beobachter | KV Shop | Casbin | Beobachter für etcd |
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 |
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 |
Raketenbeobachter | Nachrichtensystem | @fmyxyz | Beobachter für Apache RocketMQ |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Adapter | KV Shop | @mapleafgo | Beobachter für etcd |
Redis-Beobachter | KV store | Casbin | Beobachter für Redis |
Lettuce-Based Redis Watcher | KV Shop | Casbin | Watcher for Redis based on Lettuce) |
Kafka-Beobachter | Nachrichtensystem | Casbin | Beobachter für Apache Kafka |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Beobachter | KV store | 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 |
MongoDB Change Streams Watcher | Datenbank | Casbin | Watcher for MongoDB Change Streams |
Postgre-Beobachter | Database | @mcollina | Beobachter für PostgreSQL |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Beobachter | KV store | Casbin | Beobachter für etcd |
Redis-Beobachter | KV Shop | Casbin | Beobachter für Redis |
Redis Watcher | KV Shop | Wissenschaftslogik | Watcher for Redis |
Redis Async Watcher | KV store | @kevinkelin | Watcher for Redis |
PostgreSQL-Beobachter | Database | Casbin | Beobachter für PostgreSQL |
RabbitMQ-Beobachter | Nachrichtensystem | Casbin | Beobachter für RabbitMQ |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV Shop | @Sbou | Beobachter für Redis |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV store | CasbinRuby | Beobachter für Redis |
RabbitMQ Watcher | Messaging system | CasbinRuby | Watcher for RabbitMQ |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV store | @Tinywan | Watcher for Redis |
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:
API | Beschreibung |
---|---|
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. Ein klassischer Callback ist Enforcer.LoadPolicy(). |
Update() error | Update 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) error | UpdateForAddPolicy 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) error | UPdateForRemovePolicy 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) error | UpdateForRemoveFilteredPolicy 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) error | UpdateForSavePolicy calls the update callback of other instances to synchronize their policy. Es wird nach Enforcer.SavePolicy() aufgerufen |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies 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) error | UpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. Es wird nach Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() und Enforcer.RemoveNamedGroupingPolicies(). |