Proveedor de ASP.NET con diferentes tipos de roles
-
22-09-2019 - |
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
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:)
Creo que hay un método getUsersInRole. http://msdn.microsoft.com/ en-us / library / system.web.security.roles.getusersinrole.aspx