2011-09-06 5 views
0

Comment puis-je "Activer/désactiver les rôles" ou "Créer ou gérer des rôles" sans l'outil d'administration de site Web ASP.NET? Je suis capable de créer l'utilisateur/gérer l'utilisateur/activer l'utilisateur etc pour mon application web MVC3 en utilisant cet outil. Cependant, je voudrais donner cet outil aux administrateurs pour "créer/gérer des rôles" et ils n'ont pas Visual Studio installé sur leurs postes de travail.Outil d'administration de site Web .NET

Répondre

1

Vous avez un accès facile aux rôles à l'intérieur de vos contrôleurs:

if (!Roles.RoleExists("Guest")) 
    Roles.CreateRole("Guest"); 

Roles.AddUserToRole(userName, "Guest"); 

Donc, si vous venez de créer un contrôleur et un couple d'Action + View, vous pouvez créer votre propre outil.

Et bien sûr, vous voulez limiter l'accès:

[Authorize(Roles = "Admin, Super User")] 
public class RolesController : Controller 
{ 
} 
+0

Je vais essayer votre solution. Je vous remercie! – rk1962

+0

J'ai essayé votre solution et cela a fonctionné. Merci beaucoup! – rk1962

+0

@ rk1962 souhaitez-vous s'il vous plaît partager le code sur la façon de faire votre propre outil de gestion de rôle? Je peux user cette réponse dans ma méthode de graine mais je m'inquiète de ce qui se produirait une fois que ce code serait expédié en production. – Komengem

1

Vous devez créer votre propre outil d'administration qui utilise le fournisseur d'appartenance ASP.NET. Le projet open source http://websitemanager.codeplex.com/ peut également être utile.

+0

Je vais essayer de créer ma propre page d'administration comme recommandé par Henk. Je vous remercie! – rk1962

0

Il se peut que vous deviez "éduquer" les utilisateurs sur la façon de modifier le fichier de configuration du site Web. simplement éditer les rôles ne sont pas un gros problème, même si elles sont XML éditant directement

1

Voici comment je traite avec les utilisateurs d'édition et des rôles.

Dans mon contrôleur j'ai le code suivant. Ne vous occupez pas des partenaires IList vous n'en aurez pas besoin. Vous voudrez modéliser un utilisateur dans votre AccountController (en supposant que vous l'utilisiez pour vos comptes d'utilisateur) avec les rôles.

public ActionResult Edit(string UserName) 
{ 
    IList<Partner> partners = r.ListPartners(); 
    MembershipUser user = Membership.GetUser(UserName); 
    UserProfile profile = UserProfile.GetProfile(user.UserName); 
    User model = new User(); 
    model.UserName = user.UserName; 
    model.Email = user.Email; 
    model.ActiveAccount = user.IsApproved; 
    model.PartnerID = profile.PartnerID; 
    model.IsAdministrator = Roles.IsUserInRole(user.UserName, "Administrator"); 
    model.IsApprover = Roles.IsUserInRole(user.UserName, "Approver"); 
    model.IsContributor = Roles.IsUserInRole(user.UserName, "Contributor"); 
    model.IsReporter = Roles.IsUserInRole(user.UserName, "Reporter"); 
    IList<Partner> p = r.ListPartners(); 
    ViewBag.Partners = new SelectList(p.AsEnumerable(), "PartnerID", "Name", model.PartnerID);    
    return View(model); 
} 

Mon poste ressemble

// 
    // POST: /Account/Edit 
    [HttpPost] 
    public ActionResult Edit(User model) 
    { 
     MembershipUser user = Membership.GetUser(model.UserName); 
     UserProfile profile = UserProfile.GetProfile(model.UserName); 
     user.Email = model.Email; 
     user.IsApproved = model.ActiveAccount;    
     profile.PartnerID = model.PartnerID;   

     #region If Else Block for Role 
     if (Roles.IsUserInRole(model.UserName, "Administrator") && !model.IsAdministrator) 
     { 
      Roles.RemoveUserFromRole(model.UserName, "Administrator"); 
     } 
     else if (!Roles.IsUserInRole(model.UserName,"Administrator") && model.IsAdministrator) 
     { 
      Roles.AddUserToRole(model.UserName, "Administrator"); 
     } 
     if (Roles.IsUserInRole(model.UserName, "Reporter") && !model.IsReporter) 
     { 
      Roles.RemoveUserFromRole(model.UserName, "Reporter"); 
     } 
     else if (!Roles.IsUserInRole(model.UserName, "Reporter") && model.IsReporter) 
     { 
      Roles.AddUserToRole(model.UserName, "Reporter"); 
     } 
     if (Roles.IsUserInRole(model.UserName, "Contributor") && !model.IsContributor) 
     { 
      Roles.RemoveUserFromRole(model.UserName, "Contributor"); 
     } 
     else if (!Roles.IsUserInRole(model.UserName, "Contributor") && model.IsContributor) 
     { 
      Roles.AddUserToRole(model.UserName, "Contributor"); 
     } 
     if (Roles.IsUserInRole(model.UserName, "Approver") && !model.IsApprover) 
     { 
      Roles.RemoveUserFromRole(model.UserName, "Approver"); 
     } 
     else if (!Roles.IsUserInRole(model.UserName, "Approver") && model.IsApprover) 
     { 
      Roles.AddUserToRole(model.UserName, "Approver"); 
     } 
     #endregion    
     Membership.UpdateUser(user); 
     return RedirectToAction("ManageUsers", "Account"); 
    } 

Espérons que cela vous donne une idée de ce que vous devez faire. Je suppose que vous pouvez créer une vue ok avec votre modèle d'utilisateur.

+0

Merci pour l'exemple de code. – rk1962

Questions connexes