مزود ASP.NET مع أنواع مختلفة من الأدوار
-
22-09-2019 - |
سؤال
لدي أنواع مختلفة من الأدوار لأخذها في الاعتبار عند تفويض المستخدم. على سبيل المثال: يجب أن يكون جون موقع المدير وكن جزءًا من اللوازم المكتبية قسم لطلب جهاز كمبيوتر جديد.
مشكلة الأدوار هي أدوار. GetRolesForuser ("John") يمكن أن يعيد فقط مجموعة سلسلة.
هل يجب أن أذهب مع roleprovider مخصص و rolemanager المخصصة؟ أو هل يجب أن أقوم بتطوير profileManager مخصص لإضافة طرق مثل getUserswithProfilePerties ()؟
أي اقتراح مرحب به!
ثيبوت
تحرير: مثال أعلاه مبسط ، يمكن أن يكون لديّ 4 أنواع من الأدوار التي هي 4 مجموعات مختلفة.
تحرير: لقد وجدت أ سؤال مشابه جدا
المحلول
لماذا لا تنشئ "CompositeroleProvider" مع اتفاقية كاتبة من مسار إلى مستوى للوصول إلى كل مزود دور ثانوي. لا يزال يتعين عليك إنشاء مقدمي الأدوار المتعددة ، لكن مزودك المركب أو العالي يعمل كل العمل من أجلك. أخطط للقيام بشيء مماثل مع profileprovider
نصائح أخرى
من ما تكتبه ؛ أعتقد أن كل ما تحتاجه متاح حاليًا خارج الصندوق:
// Return all Users in a Role
string[] users;
users = Roles.GetUsersInRole("RoleName");
// Return all Roles for a User
string[] roles;
roles = Roles.GetRolesForUser();
// Search through Membership store locating users with a role
MembershipUserCollection mu;
mu = Membership.GetAllUsers();
// Loop through all membership users looking for users in a role
foreach(MembershipUser m in mu){
if(Roles.IsUserInRole(m.UserName, "Role Name")){
// Do something
// We can even nest to x levels
if (Roles.IsUserInRole(m.UserName, "Another Role")){
// Do something else
}
}
}
يرجى توضيح ما إذا كنت قد أسيء فهم سؤالك.
أنا أدرس كيفية حل مشكلة مماثلة إلى حد ما وقد توصلت إلى استنتاج مفاده أن أفضل ما يجب فعله هو تنفيذ مزود دور مخصص.
أنا أستخدم هذا (http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx) كقاعدة وسأقوم بتنفيذ أساليب مثل (Ismanager ، getDepartment ، ECC) .
سيتم تخزين البيانات في الجداول المخصصة التي يتم ربطها إلى جدول ASPNET_USERS.
آمل أن يساعد شخص ما في المستقبل :)
أعتقد أن هناك طريقة getUsersinrole.http://msdn.microsoft.com/en-us/library/system.web.security.roles.getusersinrole.aspx