سؤال

لدي أنواع مختلفة من الأدوار لأخذها في الاعتبار عند تفويض المستخدم. على سبيل المثال: يجب أن يكون جون موقع المدير وكن جزءًا من اللوازم المكتبية قسم لطلب جهاز كمبيوتر جديد.

مشكلة الأدوار هي أدوار. 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.

آمل أن يساعد شخص ما في المستقبل :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top