Pregunta

Me tienen diferentes tipos de roles a tener en cuenta al autorizar a un usuario. Por ejemplo:. John debe tener Posición Administrador y ser parte de los suministros de oficina Departamento para ordenar un nuevo equipo

Problema con roles es Roles.GetRolesForUser ( "Juan") sólo puede devolver una matriz de cadenas.

¿Debo ir con una costumbre y la costumbre RoleProvider roleManager? o debería desarrollar una costumbre ProfileManager añadir métodos como GetUsersWithProfileProperties ()?

Cualquier sugerencia es bienvenida!

Thibaut

EDIT: el ejemplo anterior está simplificada que podría tener una tanto como 4 tipos de funciones que son 4 colecciones diferentes.

EDIT: He encontrado una muy similar pregunta

¿Fue útil?

Solución

¿por qué no crear un "CompositeRoleProvider" con una trayectoria a nivel convención typew para acceder a cada proveedor de papel subordinado. Usted todavía tendrá que crear varios proveedores de papel, pero su proveedor de compuesto o de nivel superior hace todo el trabajo por usted. Tengo la intención de hacer una cosa similar con ProfileProvider

Otros consejos

A partir de lo que escribe; Creo que todo lo que necesita está disponible fuera de la caja:

    // 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, aclarar si he entendido mal su pregunta.

estoy estudiando la forma de resolver un problema bastante similar y he llegado a la conclusión de que lo mejor que puede hacer es implementar un proveedor de funciones personalizadas.

Estoy usando este (http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx) como base y voy a poner en práctica mis métodos como (isManager, GetDepartment , ecc).

Los datos se almacenan en tablas personalizadas que se unen a la mesa aspnet_users.

La esperanza puede ayudar a alguien en el futuro:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top