Вопрос

У меня есть разные типы ролей, которые нужно учитывать при авторизации пользователя.Например:Джон , должно быть , Положение Менеджер и быть частью Канцелярских принадлежностей Отдел заказать новый компьютер.

Проблема с ролями заключается в Roles.GetRolesForUser("John") может возвращать только массив строк.

Должен ли я использовать пользовательский RoleProvider и пользовательский RoleManager?или мне следует разработать пользовательский ProfileManager для добавления таких методов, как GetUsersWithProfileProperties()?

Любое предложение приветствуется!

Тибо

Редактировать:приведенный выше пример упрощен, у меня могло бы быть целых 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top