c# - 应用架构-管理员注册和管理

标签 c# asp.net-mvc-4 razor simplemembership

不知道这是否是一个合适的问题。然而,事情就是这样。

我目前正在为客户开发一个项目,ASP.net 4.5 MVC4 razor。它基本上是一个网上商店,供他们的客户注册一个帐户并从他们的目录中订购产品以在他们举办的事件中使用。客户必须注册我的客户员工创建的事件才能下订单。该站点上有一个管理员门户,他们可以在其中登录并创建、管理和更新事件、订单和用户。如何做到这一点不是我的问题。我的问题是:

我到底应该如何让管理员注册?!大家用的什么流程?我认为硬编码密码不好,而且我确实想将其与普通用户注册分开。我打算使用 SimpleMembership。我的意思是现有管理员可以创建管理员帐户,但是第一个管理员帐户呢?鸡还是蛋?这有意义吗?

编辑:我在这方面做了很多功课,我的意思是我想我可以在 webpages_Roles 中手动添加一个 Admin 角色,然后手动将其添加到第一个管理员,然后让后续管理员由管理员添加该角色,但第一个几个步骤听起来有点老套。

最佳答案

正如您在编辑 部分所说,您应该首先手动添加一个管理员帐户。之后,您可以像这样简单地向任何注册用户授予 Admin 角色:

Roles.AddUserToRole(model.UserName, "Admin");  

如果你想让你的管理员与其他用户完全隔离,你应该给普通用户一个user角色,不要让管理员拥有这个角色。

所以,只需在 AccountController.csRegister 操作方法中添加上面的代码

    [HttpPost]
    [Authorize(Roles="A, Personnels")]
    [ValidateAntiForgeryToken]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                Roles.AddUserToRole(model.UserName, "User"); // Add this line here...
                WebSecurity.Login(model.UserName, model.Password);
                return RedirectToAction("Index", "Home");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

并负责自己创建管理员帐户,或者让他们注册为普通用户并执行以下操作[推荐第一种方法]:

Roles.RemoveUserFromRole(model.UserName, "User");
Roles.AddUserToRole(model.UserName, "Admin");

就是这样......

关于c# - 应用架构-管理员注册和管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18167691/

相关文章:

c# - .NET DLL 中的 System.DllNotFoundException

c# - 如何从整数列表中设置选择元素的值和文本值

c# - 在 C# 或 Java 中进行 Base64 解码

c# - p/invoke 不平衡堆栈错误

c# - 在ViewModel、ASP.net MVC中定义 "Model"类型的属性好不好

c# - EditorTemplate 未按预期呈现?

asp.net-mvc - 如何在 MVC 5 中的表单帖子上显示请等待消息,直到 Controller 返回 View

asp.net-mvc - 如何将 Telerik ComboBox 中的数据绑定(bind)到我的数据模型

c# - 如何验证 XPS 文档?

asp.net-mvc - 在 ASP.NET MVC4 中存储用户信息的策略是什么