Watchers
etcdのような分散メッセージングシステムの使用をサポートしており、複数のCasbinエンフォーサーインスタンス間で一貫性を維持します。 これにより、ユーザーは複数のCasbinエンフォーサーを同時に使用して、大量の権限チェックリクエストを処理することができます。
ポリシーストレージアダプターと同様に、メインライブラリにウォッチャーコードは含まれていません。 新しいメッセージングシステムのサポートは、ウォッチャーとして実装する必要があります。 Casbinウォッチャーの完全なリストは以下に提供されています。 新しいウォッチャーのための第三者からの貢献を歓迎します、私たちに知らせてください、そして私たちはそれをこのリストに追加します:
- 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
複数のインスタンス間での増分同期をサポートするために、WatcherEx
インターフェースを提供します。 ポリシーが変更されたときに他のインスタンスに通知できることを期待していますが、現在WatcherEx
の実装はありません。 これを達成するためにはディスパッチャーの使用をお勧めします。
Watcher
インターフェースと比較して、WatcherEx
は受信した更新アクションのタイプを区別することができます。例えば、AddPolicy
やRemovePolicy
などです。
WatcherEx Apis:
API | 説明 |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallbackは、他のインスタンスによってDBのポリシーが変更されたときにウォッチャーが呼び出すコールバック関数を設定します。 典型的なコールバックはEnforcer.LoadPolicy()です。 |
Update() error | Updateは他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 通常、DBのポリシーを変更した後に呼び出されます。例えば、Enforcer.SavePolicy()、Enforcer.AddPolicy()、Enforcer.RemovePolicy()などです。 |
Close() | Closeはウォッチャーを停止し解放し、コールバック関数はこれ以上呼び出されません。 |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicyは他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 ポリシーがEnforcer.AddPolicy()、Enforcer.AddNamedPolicy()、Enforcer.AddGroupingPolicy()、Enforcer.AddNamedGroupingPolicy()を介して追加された後に呼び出されます。 |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UpdateForRemovePolicyは他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 ポリシーがEnforcer.RemovePolicy()、Enforcer.RemoveNamedPolicy()、Enforcer.RemoveGroupingPolicy()、Enforcer.RemoveNamedGroupingPolicy()によって削除された後に呼び出されます。 |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicyは他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 これは、Enforcer.RemoveFilteredPolicy()、Enforcer.RemoveFilteredNamedPolicy()、Enforcer.RemoveFilteredGroupingPolicy()、Enforcer.RemoveFilteredNamedGroupingPolicy()の後に呼び出されます。 |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicyは、他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 これは、Enforcer.SavePolicy()の後に呼び出されます。 |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPoliciesは、他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 これは、Enforcer.AddPolicies()、Enforcer.AddNamedPolicies()、Enforcer.AddGroupingPolicies()、Enforcer.AddNamedGroupingPolicies()の後に呼び出されます。 |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePoliciesは、他のインスタンスの更新コールバックを呼び出してポリシーを同期します。 これは、Enforcer.RemovePolicies()、Enforcer.RemoveNamedPolicies()、Enforcer.RemoveGroupingPolicies()、Enforcer.RemoveNamedGroupingPolicies()の後に呼び出されます。 |