Добавление ролей пользователей при регистрации (проверка подлинности с помощью форм) MVC3 - PullRequest
2 голосов
/ 02 сентября 2011

Я занимаюсь разработкой проекта 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 Ответ

5 голосов
/ 02 сентября 2011
if (createStatus == MembershipCreateStatus.Success)
            {
                Roles.AddUserToRole(model.UserName, "RoleName");
                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            }

Попробуй это. Это должно работать

...