ASP.Net MVC 4 и WebSecurity - подтверждение регистрации пользователей по электронной почте

Я использую шаблон интернет-приложения по умолчанию для проекта ASP.Net MVC 4. Действие Register в контроллере Account выглядит следующим образом:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        try
        {
            WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
            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);
}

Однако это не дает возможности использовать функциональные возможности для использования адреса электронной почты для регистрации и шагов для отправки электронной почты для подтверждения и активации учетной записи. Я вижу, что шаблон Starter Site WebMatrix использует WebSecurity и предоставляет функциональность, которую я ищу, но она не соответствует стандарту MVC. Я мог бы объединить оба подхода, чтобы прийти к совместимому с MVC 4 решению, но Я ищу готовый код для экономии времени. Любые хорошие образцы или указатели очень ценятся. Спасибо.

Ответ 1

Фактически SimpleMembership подключен для поддержки подтверждения на 2 шага. Перейдите в это сообщение в блоге, чтобы узнать, как вы расширяете UserProfile, чтобы включить свойство электронной почты. Измените регистрационное представление, чтобы захватить электронную почту. Теперь, когда вы создаете нового пользователя, используйте CreateUserAndAccount, как это.

string confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new{Email = model.Email}, true);

Теперь вы просто отправляете подтверждениеToken в электронном письме пользователю, используя ваш любимый метод электронной почты для ASP.NET MVC. Мне нравится Postal, потому что вы можете использовать движок Razor для генерации тела вашей электронной почты. Тело письма будет содержать ссылку на новую веб-страницу (контроллер/действие), которая имеет подтверждениеToken как идентификатор ({controller}/{action}/{id}). Когда пользователь нажимает на ссылку, ваш код будет выполнять подтверждение с помощью WebSecurity.ConfirmAccount. Это все, что требуется для добавления подтверждения по электронной почте в ваше приложение MVC 4. Существует пошаговое руководство по добавлению подтверждения электронной почты на MVC 4 здесь.