在注册(表单身份验证)MVC3上添加用户角色

时间:2011-09-02 11:45:20

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

我正在开发一个MVC 3项目,并希望在注册时使用表单身份验证将用户添加到角色。所以我想创建一些复选框,或者显示角色的下拉列表,这些列表被选中,用户在注册时被分配给角色。

到目前为止我有这个代码,有效:

    public ActionResult Register()
    {
        ViewData["roleName"] = new SelectList(Roles.GetAllRoles(), "roleName");
        return View();
    }

我认为:

<label for="roleName">Select Role:</label>
@Html.DropDownList("roleName")
@Html.ValidationMessage("roleName")

这是控制器的HttpPost部分,这是我不知道编码的部分:

    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            // Attempt to register the user
            MembershipCreateStatus createStatus;
            Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);

            if (createStatus == MembershipCreateStatus.Success)
            {
                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", ErrorCodeToString(createStatus));
            }
        }

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

因此,所有角色都会显示在视图中。我需要知道的是要添加到HttpPost部分以使其正常工作。

非常感谢,艾米

1 个答案:

答案 0 :(得分:5)

if (createStatus == MembershipCreateStatus.Success)
            {
                Roles.AddUserToRole(model.UserName, "RoleName");
                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            }

试试这个。它应该工作