4

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

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

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

编辑:我对此做了很多功课,我的意思是我想我可以在 pages_Roles 中手动添加一个管理员角色,然后手动将其添加到第一个管理员,然后让后续管理员通过管理员添加该角色,但前几个步骤听起来有点hackish。

4

1 回答 1

1

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

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

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

所以,只需将上面的代码添加到Registeraction 方法中AccountController.cs

    [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");

就是这样...

于 2013-08-11T07:43:03.330 回答