التخطي إلى المحتوى الرئيسي

Watchers

نحن ندعم استخدام أنظمة الرسائل الموزعة مثل etcd للحفاظ على الاتساق بين عدة نماذج من مطبق القواعد Casbin. هذا يسمح لمستخدمينا باستخدام عدة نماذج من مطبق القواعد Casbin بالتزامن للتعامل مع عدد كبير من طلبات التحقق من الأذونات.

مشابهًا لمحولات تخزين السياسات، نحن لا نضمن كود المراقب في المكتبة الرئيسية. يجب تنفيذ أي دعم لنظام رسائل جديد كمراقب. قائمة كاملة بمراقبي Casbin متوفرة أدناه. نرحب بأي مساهمات من طرف ثالث لمراقب جديد، يرجى إعلامنا وسنضيفه إلى هذه القائمة:

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. نأمل أن يمكنها إعلام النماذج الأخرى عندما تتغير السياسة، ولكن حاليًا لا يوجد تنفيذ لـ WatcherEx. نوصي باستخدام المرسل لتحقيق ذلك.

مقارنة بواجهة Watcher، يمكن لـ WatcherEx التمييز بين نوع عملية التحديث المستلمة، مثل AddPolicy و RemovePolicy.

واجهات برمجة تطبيقات WatcherEx:

واجهة برمجة التطبيقاتالوصف
SetUpdateCallback(func(string)) errorSetUpdateCallback يضبط وظيفة الرجوع التي سيتم استدعاؤها من قبل المراقب، عندما تتغير السياسة في قاعدة البيانات بواسطة نماذج أخرى. مثال على وظيفة الرجوع هو Enforcer.LoadPolicy().
Update() errorUpdate يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. عادة ما يتم استدعاؤه بعد تغيير السياسة في قاعدة البيانات، مثل Enforcer.SavePolicy()، Enforcer.AddPolicy()، Enforcer.RemovePolicy()، إلخ.
Close()Close يوقف ويطلق المراقب، ولن يتم استدعاء وظيفة الرجوع بعد الآن.
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. يتم استدعاؤه بعد إضافة سياسة عبر Enforcer.AddPolicy()، Enforcer.AddNamedPolicy()، Enforcer.AddGroupingPolicy() و Enforcer.AddNamedGroupingPolicy().
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUPdateForRemovePolicy يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. يتم استدعاؤه بعد إزالة سياسة بواسطة Enforcer.RemovePolicy()، Enforcer.RemoveNamedPolicy()، Enforcer.RemoveGroupingPolicy() و Enforcer.RemoveNamedGroupingPolicy().
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. يتم استدعاؤه بعد Enforcer.RemoveFilteredPolicy()، Enforcer.RemoveFilteredNamedPolicy()، Enforcer.RemoveFilteredGroupingPolicy() و Enforcer.RemoveFilteredNamedGroupingPolicy().
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. يتم استدعاؤه بعد Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. يتم استدعاؤه بعد Enforcer.AddPolicies()، Enforcer.AddNamedPolicies()، Enforcer.AddGroupingPolicies() و Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies يستدعي وظيفة التحديث للنماذج الأخرى لمزامنة سياستهم. يتم استدعاؤه بعد Enforcer.RemovePolicies()، Enforcer.RemoveNamedPolicies()، Enforcer.RemoveGroupingPolicies() و Enforcer.RemoveNamedGroupingPolicies().