Watchers
เราสนับสนุนการใช้ระบบข้อความแบบกระจายอย่าง etcd เพื่อรักษาความสอดคล้องกันระหว่างหลายอินสแตนซ์ของ Casbin enforcer สิ่งนี้ช่วยให้ผู้ใช้ของเราสามารถใช้ Casbin enforcers หลายตัวพร้อมกันเพื่อจัดการคำขอตรวจสอบสิทธิ์จำนวนมาก
คล้ายกับอะแดปเตอร์สำหรับการเก็บนโยบาย, เราไม่ได้รวมโค้ด watcher ในไลบรารีหลัก การสนับสนุนสำหรับระบบข้อความใหม่ควรจะถูกนำมาใช้เป็น watcher รายการครบถ้วนของ Casbin watchers มีให้ด้านล่างนี้ เรายินดีต้อนรับการมีส่วนร่วมจากบุคคลที่สามสำหรับ watcher ใหม่, กรุณาแจ้งเราและเราจะเพิ่มมันเข้าไปในรายการนี้:
- 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
interface เราหวังว่ามันสามารถแจ้งอินสแตนซ์อื่นๆ เมื่อนโยบายมีการเปลี่ยนแปลง, แต่ปัจจุบันยังไม่มีการนำ WatcherEx
มาใช้ เราแนะนำให้คุณใช้ dispatcher เพื่อทำสิ่งนี้
เมื่อเทียบกับ Watcher
interface, WatcherEx
สามารถแยกแยะประเภทของการกระทำการอัปเดตที่ได้รับ, เช่น, AddPolicy
และ RemovePolicy
WatcherEx Apis:
API | คำอธิบาย |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback ตั้งค่าฟังก์ชัน callback ที่ watcher จะเรียก, เมื่อนโยบายในฐานข้อมูลถูกเปลี่ยนแปลงโดยอินสแตนซ์อื่น ตัวอย่างของ callback คลาสสิกคือ Enforcer.LoadPolicy() |
Update() error | Update เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มักจะถูกเรียกหลังจากมีการเปลี่ยนแปลงนโยบายในฐานข้อมูล, เช่น Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() ฯลฯ |
Close() | Close หยุดและปล่อย watcher, ฟังก์ชัน callback จะไม่ถูกเรียกอีกต่อไป |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจากนโยบายถูกเพิ่มผ่าน Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() และ Enforcer.AddNamedGroupingPolicy() |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UPdateForRemovePolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจากนโยบายถูกลบโดย Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() และ Enforcer.RemoveNamedGroupingPolicy() |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() และ Enforcer.RemoveFilteredNamedGroupingPolicy() |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() และ Enforcer.AddNamedGroupingPolicies() |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() และ Enforcer.RemoveNamedGroupingPolicies() |