.NET网站管理工具

时间:2011-09-06 14:23:17

标签: asp.net-mvc asp.net-mvc-3

如何在没有ASP.NET网站管理工具的情况下“启用/禁用角色”或“创建或管理角色”?我可以使用此工具为我的MVC3 Web应用程序创建用户/管理用户/启用用户等。但是,我想将此工具提供给管理员以“创建/管理角色”,并且他们没有在其工作站上安装Visual Studio。

4 个答案:

答案 0 :(得分:1)

您需要创建自己的使用ASP.NET成员资格提供程序的管理工具。

或者,http://websitemanager.codeplex.com/处的开源项目可能很有用。

答案 1 :(得分:1)

您可以从控制器内轻松访问角色:

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

Roles.AddUserToRole(userName, "Guest");

因此,如果您只是创建一个Controller和几个Action + View,那么您可以创建自己的工具。

当然,您需要限制访问权限:

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

答案 2 :(得分: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"); 
    }

希望这能让您了解自己需要做什么。我假设您可以使用您的用户模型创建一个视图。

答案 3 :(得分:0)

可能你应该“教育”他们如何编辑网站配置文件。即使他们直接编辑XML,编辑角色也不是什么大问题