Fournisseur ASP.NET avec différents types de rôles
-
22-09-2019 - |
Question
J'ai différents types de rôles à prendre en compte lors de l'autorisation d'un utilisateur. Par exemple:. John doit avoir Position Manager et faire partie des fournitures de bureau Département pour commander un nouvel ordinateur
Problème avec les rôles est Roles.GetRolesForUser ( « John ») ne peut retourner un tableau de chaînes.
Dois-je aller avec une coutume RoleProvider et la coutume roleManager? ou devrais-je développer un ProfileManager personnalisé pour ajouter des méthodes comme GetUsersWithProfileProperties ()?
Toute suggestion est la bienvenue!
Thibaut
EDIT: l'exemple ci-dessus I est simplifiée pourrait avoir jusqu'à 4 types de rôles qui sont 4 collections différentes.
EDIT: J'ai trouvé un très similaire question
La solution
pourquoi ne pas créer un « CompositeRoleProvider » avec un chemin à niveau convention typew pour accéder à chaque fournisseur de rôle subalterne. Vous devrez toujours créer plusieurs fournisseurs de rôle, mais votre fournisseur Composite ou niveau supérieur fait tout le travail pour vous. Je prévois de faire une chose similaire avec ProfileProvider
Autres conseils
D'après ce que vous écrivez; Je crois que tout ce que vous avez besoin est actuellement disponible sur la boîte:
// 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
}
}
}
S'il vous plaît préciser si je l'ai mal compris votre question.
J'étudie comment résoudre un problème assez similaire et je suis venu à la conclusion que la meilleure chose à faire est de mettre en œuvre un fournisseur de rôle personnalisé.
J'utilise ce (http://msdn.microsoft.com/en-us/library/317sza4k(v=vs.100).aspx) comme base et je vais mettre en œuvre mes méthodes comme (ismanager GetDepartment , ecc).
Les données seront stockées dans des tableaux personnalisés qui sont joints à la table aspnet_users.
Je espère que ça peut aider quelqu'un à l'avenir:)
Je pense qu'il ya une méthode getUsersInRole. http://msdn.microsoft.com/ fr-fr / bibliothèque / system.web.security.roles.getusersinrole.aspx