Watchers
Kami mendukung penggunaan sistem perpesanan terdistribusi seperti etcd untuk mempertahankan konsistensi antara beberapa instance enforcer Casbin. Hal ini memungkinkan pengguna kami untuk secara bersamaan menggunakan beberapa enforcer Casbin untuk menangani sejumlah besar permintaan pemeriksaan izin.
Mirip dengan adaptor penyimpanan kebijakan, kami tidak menyertakan kode pengamat dalam pustaka utama. Setiap dukungan untuk sistem pesan baru harus diimplementasikan sebagai pengamat. Daftar lengkap pengamat Casbin diberikan di bawah ini. Kami menyambut kontribusi pihak ketiga untuk pengamat baru, harap beri tahu kami dan kami akan menambahkannya ke dalam daftar ini:
- Go
- Java
- Node.js
- Python
- .NET
- Ruby
- PHP
- Rust
| 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 |
| Redis WatcherEx | KV store | Casbin | WatcherEx for Redis |
| Lettuce-Based Redis Watcher | KV store | Casbin | Watcher for Redis based on Lettuce) |
| PostgreSQL Watcher | Database | Casbin | Watcher for PostgreSQL |
| Kafka Watcher | Messaging system | Casbin | Watcher for Apache Kafka |
| ZooKeeper Watcher | Messaging system | Casbin | Watcher for Apache ZooKeeper |
| 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 |
| Watcher | Type | Author | Description |
|---|---|---|---|
| Redis Watcher | KV store | Casbin | Watcher for Redis |
WatcherEx
In order to support incremental synchronization between multiple instances, we provide the WatcherEx interface. We hope it can notify other instances when the policy changes, but there is currently no implementation of WatcherEx. We recommend that you use dispatcher to achieve this.
Compared with Watcher interface, WatcherEx can distinguish what type of update action is received, e.g., AddPolicy and RemovePolicy.
WatcherEx Apis:
| API | Description |
|---|---|
| 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. A classic callback is Enforcer.LoadPolicy(). |
| Update() error | Update calls the update callback of other instances to synchronize their policy. It is usually called after changing the policy in DB, like 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. It is called after a policy is added via Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() and Enforcer.AddNamedGroupingPolicy(). |
| UpdateForRemovePolicy(sec, ptype string, params ...string) error | UPdateForRemovePolicy calls the update callback of other instances to synchronize their policy. It is called after a policy is removed by Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() and Enforcer.RemoveNamedGroupingPolicy(). |
| UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() and Enforcer.RemoveFilteredNamedGroupingPolicy(). |
| UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.SavePolicy() |
| UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies calls the update callback of other instances to synchronize their policy. It is called after Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() and Enforcer.AddNamedGroupingPolicies(). |
| UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() and Enforcer.RemoveNamedGroupingPolicies(). |