应用程序架构 - 管理员注册&管理

时间:2013-08-11 00:43:43

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

不知道这是否是一个合适的问题。但是,就在这里。

我目前正在为客户端开发一个项目,ASP.net 4.5 MVC4剃须刀。它基本上是一个网上商店,为他们的客户注册一个帐户,并从他们的目录中订购产品,以便在他们所参加的活动中使用。客户必须注册我的客户员工创建的活动才能下订单。站点上有一个管理员门户,他们将登录并创建,管理和更新事件,订单和用户。怎么做不是我的问题。我的问题是:

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

编辑:我做了相当多的家庭作业,我的意思是我想我可以手动在webpages_Roles中添加一个Admin角色并手动将其添加到第一个管理员并让后续管理员通过管理员添加该角色但是第一个几步听起来有些神圣。

1 个答案:

答案 0 :(得分:1)

正如您在 EDIT 部分中所述,您应首先手动添加管理员帐户。之后,您可以简单地将Admin角色授予任何注册用户,如下所示:

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

如果您希望管理员与其他用户完全分开,您应该向普通用户设置user角色,并且不要让管理员拥有此角色。

因此,只需在Register

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

就是这样......