Watchers
etcd와 같은 분산 메시징 시스템의 사용을 지원하여 여러 Casbin enforcer 인스턴스 간의 일관성을 유지합니다. 이를 통해 사용자들이 동시에 여러 Casbin enforcer를 사용하여 대량의 권한 확인 요청을 처리할 수 있습니다.
정책 저장 어댑터와 마찬가지로, 주 라이브러리에 watcher 코드를 포함시키지 않습니다. 새로운 메시징 시스템에 대한 지원은 watcher로 구현되어야 합니다. Casbin watcher의 전체 목록은 아래에 제공됩니다. 새로운 watcher에 대한 제3자 기여를 환영하며, 알려주시면 이 목록에 추가하겠습니다:
- 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의 정책이 변경되었을 때 watcher가 호출할 콜백 함수를 설정합니다. 클래식 콜백은 Enforcer.LoadPolicy()입니다. |
Update() error | Update는 다른 인스턴스의 업데이트 콜백을 호출하여 정책을 동기화합니다. 일반적으로 DB의 정책을 변경한 후에 호출됩니다, 예를 들어 Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() 등. |
Close() | Close는 watcher를 중지하고 해제하며, 콜백 함수는 더 이상 호출되지 않습니다. |
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() 이후에 호출됩니다. |