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

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

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

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


person Santosh    schedule 30.01.2013    source источник
comment
Как это не совместимое с MVC 4 решение?   -  person AJ.    schedule 30.01.2013
comment
Я думаю, что WebMatrix — гораздо лучшее решение, чем стандартная аутентификация с помощью форм. Возвращаемое значение метода регистрации — это токен активации. Что касается кода, который отправляет электронные письма... Ну, это поиск в Google.   -  person Artless    schedule 30.01.2013
comment
@Trickery — шаблон начального сайта не использует контроллер. Вся логика внутри бритвенных страниц. Я хотел, чтобы эта функциональность была в моем проекте MVC с использованием шаблона MVC; который я не мог легко найти в поиске Google.   -  person Santosh    schedule 30.01.2013


Ответы (1)


На самом деле SimpleMembership поддерживает двухэтапное подтверждение. Перейдите к этому сообщению в блоге, чтобы узнать, как расширить пользовательский профиль, чтобы включить свойство электронной почты. Измените представление регистрации, чтобы захватить электронную почту. Теперь, когда вы создаете нового пользователя, используйте 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. Подтвердитьаккаунт. Это все, что требуется для добавления подтверждения по электронной почте в ваше приложение MVC 4. Существует пошаговое руководство по добавлению подтверждения по электронной почте в MVC 4 здесь< /а>.

person Kevin Junghans    schedule 30.01.2013