【问题标题】:.NET Web Site Administration Tool.NET 网站管理工具
【发布时间】:2011-11-11 09:31:40
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    if (!Roles.RoleExists("Guest"))
       Roles.CreateRole("Guest");
    
    Roles.AddUserToRole(userName, "Guest");
    

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

    当然你会想要限制访问:

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

    【讨论】:

    • 我会试试你的解决方案。谢谢!
    • @rk1962 能否分享一下如何制作自己的角色管理器工具的代码?我可以在我的种子方法中使用这个答案,但我担心一旦这个代码投入生产会发生什么。
    【解决方案2】:

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

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

    【讨论】:

    • 我将尝试按照 Henk 的建议创建自己的管理页面。谢谢!
    【解决方案3】:

    这就是我处理编辑用户和角色的方式。

    在我的控制器中,我有以下代码。不要介意您不需要它的合作伙伴 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"); 
        }
    

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

    【讨论】:

      【解决方案4】:

      也许您应该“教育”他们如何编辑网站配置文件。即使他们直接编辑 XML,只是编辑角色也没什么大不了的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多