2008-11-11 9 views
6

J'utilise l'adhésion ASP.NET et remarqué qu'il n'y a pas une méthode dans le Roles class à modifier un rôle (son nom par exemple), seulement pour les créer et les supprimer.Comment renommer un rôle en utilisant l'appartenance à .NET?

Est-ce possible ou non?

EDIT: @CheGueVerra: Oui, une bonne solution de contournement. Savez-vous (pour un crédit supplémentaire :)) pourquoi ce n'est pas possible?

+0

Pourquoi il est impossible: pas en classe de base [public abstract class RoleProvider: ProviderBase] Pourquoi ils choisissent de ne pas le mettre en œuvre, que je ne sais pas encore;) Je vais vous laisser poser la question – CheGueVerra

Répondre

19

Il n'existe aucun moyen direct de modifier un nom de rôle dans le fournisseur d'appartenance. Je voudrais obtenir la liste des utilisateurs qui sont dans le rôle que vous souhaitez renommer, puis supprimez-les de la liste, supprimez le rôle, créez le rôle avec le nouveau nom et puis Ajoutez les utilisateurs trouvés plus tôt au rôle avec le nouveau nom.

public void RenameRoleAndUsers(string OldRoleName, string NewRoleName) 
{ 
    string[] users = Roles.GetUsersInRole(OldRoleName); 
    Roles.CreateRole(NewRoleName); 
    Roles.AddUsersToRole(users, NewRoleName); 
    Roles.RemoveUsersFromRole(users, OldRoleName); 
    Roles.DeleteRole(OldRoleName); 
} 

Cela changera le nom du rôle pour tous les utilisateurs du rôle. Suivi: les rôles sont utilisés pour s'assurer que l'utilisateur ne joue que sa part dans le système. User.IsInRole (ROLE_NAME) vous aidera à appliquer les valeurs BR applicables, pour un utilisateur et les rôles qu'il joue Si vous pouvez changer les noms de rôle à la volée, comment allez-vous valider que l'utilisateur est vraiment dans ce rôle. Eh bien c'est ce que j'ai compris, quand j'ai demandé à ce sujet.

modifier rtpHarry: échantillon pseudocode Converti compilable C# méthode

5

rôle dans Renommage d'un la, parce que les noms de rôle modèle d'adhésion ASP.NET serait une chose programatically Bad ™, sont utilisés dans le fichier de configuration pour définir les permissions. S'il existait un moyen par programme pour modifier le nom du rôle (qui persistait la modification de la base de données), vous rompiez immédiatement les configurations de sécurité basées sur les rôles dans web.config pour toutes les applications Web utilisant la base de données. pour garantir qu'une seule application Web puisse modifier la configuration de chaque application Web à l'aide de cette base de données Membership.

+1

vrai, mais je ne prévois pas d'utiliser le fichier de configuration, car de nouveaux rôles peuvent être créés par mes utilisateurs, et ils peuvent configurer via l'application les pages auxquelles les nouveaux rôles ont accès à. Je dois ajouter un contrôle d'exécution, donc cette restriction n'est pas nécessaire – juan

+2

Et ne serait-ce pas la même chose si vous supprimez un rôle? – juan

Questions connexes