Pergunta

Tenho diferentes tipos de funções a serem levadas em consideração ao autorizar um usuário. Por exemplo: John deve ter Posição Gerente e faça parte dos suprimentos do escritório Departamento para pedir um novo computador.

Problema com funções é papéis.

Devo ir com um RoleProvider personalizado e Rolemanager personalizado? Ou devo desenvolver um Profilemanager personalizado para adicionar métodos como getUsersWithProfileProperties ()?

Qualquer sugestão é bem -vinda!

Thibaut

EDIT: O exemplo acima é simplificado, eu poderia ter 4 tipos de funções que são 4 coleções diferentes.

Edit: eu encontrei um pergunta muito semelhante

Foi útil?

Solução

Por que não criar um "CompositeroleProvider" com uma convenção de tipo de caminho para acessar cada provedor de função subordinado. Você ainda precisará criar vários provedores de função, mas seu fornecedor composto ou de nível superior faz todo o trabalho para você. Eu pretendo fazer uma coisa semelhante com o ProfileProvider

Outras dicas

Pelo que você escreve; Eu acredito que tudo o que você precisa está disponível no momento:

    // 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
            }
        }
    }

Por favor, esclareça se eu entendi mal sua pergunta.

Estou estudando como resolver um problema bem semelhante e cheguei à conclusão de que a melhor coisa a fazer é implementar um provedor de função personalizado.

Estou usando isso (http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx) como base e implementarei meus métodos como (ismanager, getdepartment, ECC) .

Os dados serão armazenados em tabelas personalizadas unidas à tabela ASPNET_USERS.

Espero que possa ajudar alguém no futuro :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top