2011-09-06 156 views
0

如何在沒有ASP.NET網站管理工具的情況下「啓用/禁用角色」或「創建或管理角色」?我能夠使用此工具爲我的MVC3 Web應用程序創建用戶/管理用戶/啓用用戶等。但是,我想將此工具交給管理員以「創建/管理角色」,並且他們的工作站上沒有安裝Visual Studio。.NET網站管理工具

回答

1

你必須從你的控制器內部容易進入角色:

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

Roles.AddUserToRole(userName, "Guest"); 

所以,如果你只需要創建一個控制器和一個然後你可以製作你自己的工具。

當然,你會想限制訪問:

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

我會嘗試你的解決方案。謝謝! – rk1962

+0

我試過你的解決方案,它工作。非常感謝! – rk1962

+0

@ rk1962請問您是否願意分享如何製作您自己的角色管理器工具的代碼?我可以在我的種子方法中使用這個答案,但是我擔心一旦這段代碼被運到生產中會發生什麼。 – Komengem

1

您將需要創建使用ASP.NET成員資格提供程序的自己的管理工具。

或者,http://websitemanager.codeplex.com/的開源項目可能會有用。

+0

我將嘗試按照Henk的建議創建自己的管理頁面。謝謝! – rk1962

0

可能你應該「教育」他們如何編輯網站配置文件。僅在編輯的角色是不是即使他們正在編輯XML這樣一個大問題,直接

1

這是我如何處理編輯用戶和角色。

在我的控制器中,我有以下代碼。不要介意IList你不需要它的夥伴。您需要在您的AccountController中對用戶進行建模(假設您正在爲您的用戶帳戶使用此功能)。

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); 
} 

我後看起來像

// 
    // 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"); 
    } 

希望這給你的,你需要做的事情的想法。我假設你可以用你的用戶模型創建一個視圖。

+0

感謝您的示例代碼。 – rk1962