ข้ามไปยังเนื้อหาหลัก

Watchers

เราสนับสนุนการใช้ระบบข้อความแบบกระจายอย่าง etcd เพื่อรักษาความสอดคล้องกันระหว่างหลายอินสแตนซ์ของ Casbin enforcer สิ่งนี้ช่วยให้ผู้ใช้ของเราสามารถใช้ Casbin enforcers หลายตัวพร้อมกันเพื่อจัดการคำขอตรวจสอบสิทธิ์จำนวนมาก

คล้ายกับอะแดปเตอร์สำหรับการเก็บนโยบาย, เราไม่ได้รวมโค้ด watcher ในไลบรารีหลัก การสนับสนุนสำหรับระบบข้อความใหม่ควรจะถูกนำมาใช้เป็น watcher รายการครบถ้วนของ Casbin watchers มีให้ด้านล่างนี้ เรายินดีต้อนรับการมีส่วนร่วมจากบุคคลที่สามสำหรับ watcher ใหม่, กรุณาแจ้งเราและเราจะเพิ่มมันเข้าไปในรายการนี้:

WatcherTypeAuthorDescription
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExKV storeCasbinWatcherEx for Redis
Redis WatcherKV store@billcobblerWatcher for Redis
Etcd WatcherKV storeCasbinWatcher for etcd
TiKV WatcherKV storeCasbinWatcher for TiKV
Kafka WatcherMessaging system@wgarunapWatcher for Apache Kafka
NATS WatcherMessaging systemSolutoWatcher for NATS
ZooKeeper WatcherMessaging systemGrepsrWatcher for Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@rusenaskWatcher 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, InMemoryMessaging System@bartventerWatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ WatcherMessaging system@fmyxyzWatcher for Apache RocketMQ

WatcherEx

เพื่อสนับสนุนการซิงโครไนซ์แบบเพิ่มเติมระหว่างหลายอินสแตนซ์, เรามี WatcherEx interface เราหวังว่ามันสามารถแจ้งอินสแตนซ์อื่นๆ เมื่อนโยบายมีการเปลี่ยนแปลง, แต่ปัจจุบันยังไม่มีการนำ WatcherEx มาใช้ เราแนะนำให้คุณใช้ dispatcher เพื่อทำสิ่งนี้

เมื่อเทียบกับ Watcher interface, WatcherEx สามารถแยกแยะประเภทของการกระทำการอัปเดตที่ได้รับ, เช่น, AddPolicy และ RemovePolicy

WatcherEx Apis:

APIคำอธิบาย
SetUpdateCallback(func(string)) errorSetUpdateCallback ตั้งค่าฟังก์ชัน callback ที่ watcher จะเรียก, เมื่อนโยบายในฐานข้อมูลถูกเปลี่ยนแปลงโดยอินสแตนซ์อื่น ตัวอย่างของ callback คลาสสิกคือ Enforcer.LoadPolicy()
Update() errorUpdate เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มักจะถูกเรียกหลังจากมีการเปลี่ยนแปลงนโยบายในฐานข้อมูล, เช่น Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() ฯลฯ
Close()Close หยุดและปล่อย watcher, ฟังก์ชัน callback จะไม่ถูกเรียกอีกต่อไป
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจากนโยบายถูกเพิ่มผ่าน Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() และ Enforcer.AddNamedGroupingPolicy()
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUPdateForRemovePolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจากนโยบายถูกลบโดย Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() และ Enforcer.RemoveNamedGroupingPolicy()
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() และ Enforcer.RemoveFilteredNamedGroupingPolicy()
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() และ Enforcer.AddNamedGroupingPolicies()
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies เรียก callback การอัปเดตของอินสแตนซ์อื่นเพื่อซิงโครไนซ์นโยบายของพวกเขา มันถูกเรียกหลังจาก Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() และ Enforcer.RemoveNamedGroupingPolicies()