Menu Permissions
نبدأ بتقديم مثال على Spring Boot يتضمن نظام قائمة. هذا المثال يستخدم jCasbin لإدارة صلاحيات القائمة. في النهاية، يهدف إلى تجريد وسيط برمجي، خصيصًا لصلاحيات القائمة، والذي يمكن توسيعه للغات أخرى يدعمها Casbin، مثل Go و Python.
1. ملفات التكوين
تحتاج إلى إعداد إدارة الأدوار والصلاحيات في ملف policy.csv، بالإضافة إلى العلاقات الأبوية-الفرعية بين عناصر القائمة. لمزيد من التفاصيل، يرجى الرجوع إلى هذا المستودع على GitHub.
1.1 نظرة عامة
باستخدام policy.csv، يمكنك تكوين صلاحيات الأدوار وهياكل القائمة بشكل مرن للتحكم الدقيق في الوصول. يحدد ملف التكوين هذا صلاحيات الوصول للأدوار المختلفة على عناصر القائمة المتنوعة، والعلاقات بين المستخدمين والأدوار، والعلاقات الهرمية بين عناصر القائمة.
1.2 تعريفات الصلاحيات (السياسات)
- قواعد السياسة: تُعرف السياسات ببادئة
p، محددة الأدوار (sub) وصلاحياتها (act) على عناصر القائمة (obj)، بالإضافة إلى تأثير القاعدة (eft)، حيث يشيرallowإلى أن الصلاحية ممنوحة، وdenyيشير إلى أنها مرفوضة.
أمثلة:
p, ROLE_ROOT, SystemMenu, read, allowتعني أن الدورROLE_ROOTلديه صلاحية القراءة لعنصر القائمةSystemMenu.p, ROLE_ROOT, UserMenu, read, denyتعني أن الدورROLE_ROOTمرفوض منه صلاحية القراءة لعنصر القائمةUserMenu.
1.3 الأدوار وعلاقات المستخدمين
- وراثة الدور: تُعرف علاقات المستخدم-الدور والتسلسل الهرمي للأدوار ببادئة
g. هذا يسمح للمستخدمين بوراثة الصلاحيات من دور واحد أو أكثر.
أمثلة:
g, user, ROLE_USERتعني أن المستخدمuserمُعين للدورROLE_USER.g, ROLE_ADMIN, ROLE_USERتعني أنROLE_ADMINيرث الصلاحيات منROLE_USER.