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:)
- 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 |
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 |
MongoDB Change Streams Watcher | Datenbank | Casbin | Watcher for MongoDB Change Streams |
Postgre-Beobachter | Datenbank | Matteo Collina | Beobachter für PostgreSQL |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Etcd-Beobachter | KV Shop | Casbin | Beobachter für etcd |
Redis-Beobachter | KV Shop | Casbin | Beobachter für Redis |
Redis Watcher | KV store | Wissenschaftslogik | Watcher for Redis |
PostgreSQL-Beobachter | Database | 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 |
Beobachter | Typ | Autor | Beschreibung |
---|---|---|---|
Redis-Beobachter | KV Shop | @Tinywan | Beobachter für 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(). |