Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用程序体系结构-管理员注册&;管理层_C#_Asp.net Mvc 4_Razor_Simplemembership - Fatal编程技术网

C# 应用程序体系结构-管理员注册&;管理层

C# 应用程序体系结构-管理员注册&;管理层,c#,asp.net-mvc-4,razor,simplemembership,C#,Asp.net Mvc 4,Razor,Simplemembership,不知道这是不是一个合适的问题。然而,事情是这样的 我目前正在为一个客户ASP.net 4.5 MVC4 razor的项目工作。它基本上是一个网络商店,为注册帐户并从目录中订购产品以用于举办活动的客户提供服务。客户必须注册我的客户员工创建的活动才能下订单。网站上有一个管理员门户,他们可以在那里登录、创建、管理和更新事件、订单和用户。如何做到这一点不是我的问题。我的问题是: 我该怎么让管理员注册?!你们用了什么方法?我不认为硬编码的密码是好的,我确信我想把它与普通的用户注册分开。我计划使用Simpl

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

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

我该怎么让管理员注册?!你们用了什么方法?我不认为硬编码的密码是好的,我确信我想把它与普通的用户注册分开。我计划使用SimpleMembership。我的意思是现有的管理员可以创建管理员帐户,但是第一个管理员帐户呢。鸡肉还是鸡蛋?这有意义吗

编辑:我在这方面做了大量的准备工作,我的意思是我想我可以在网页中手动添加一个管理员角色,并手动将其添加到第一个管理员,然后让后续管理员通过管理员添加该角色,但前两个步骤听起来有点老套。

正如您在编辑部分所说,您应该首先手动添加管理员帐户。之后,您只需向任何注册用户授予
Admin
角色,如下所示:

Roles.AddUserToRole(model.UserName, "Admin");  
如果你想让你的管理员与其他用户完全分离,你应该给普通用户设置一个
user
角色,不要让管理员拥有这个角色

因此,只需在
AccountController.cs的
Register
action方法中添加上述代码即可

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

就这样…

谢谢您的全面回复。经过一段时间的思考,我意识到手动添加第一个用户是没有办法的,这将是有效的,也不会导致漏洞。