Asp.net mvc 4 ASP.NETMVC4和WebSecurity-通过电子邮件确认用户注册

Asp.net mvc 4 ASP.NETMVC4和WebSecurity-通过电子邮件确认用户注册,asp.net-mvc-4,security,simplemembership,Asp.net Mvc 4,Security,Simplemembership,我正在使用ASP.NETMVC4项目的默认Internet应用程序模板。帐户控制器中的注册操作如下所示- [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Register(RegisterModel model) { if (ModelState.IsValid) { // Attempt to register the user try

我正在使用ASP.NETMVC4项目的默认Internet应用程序模板。帐户控制器中的注册操作如下所示-

[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的Starter站点模板使用WebSecurity并提供了我想要的功能,但它不遵循标准MVC模式。我可以混合使用这两种方法来获得与MVC4兼容的解决方案,但我正在寻找可以节省时间的现成代码。非常感谢任何好的样品或指针。谢谢。

实际上SimpleMembership支持两步确认。查看如何扩展UserProfile以包含电子邮件属性。修改注册视图以捕获电子邮件。现在,当您创建新用户时,可以这样使用

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

现在,您只需使用您最喜欢的ASP.NET MVC电子邮件发送方法在电子邮件中向用户发送确认令牌。我喜欢,因为你可以使用剃须刀引擎来生成你的电子邮件正文。电子邮件正文将包含指向新网页(控制器/操作)的链接,该网页的id为confirmationToken({controller}/{action}/{id})。当用户单击链接时,您的代码将使用执行确认。这就是向MVC4应用程序添加电子邮件确认所需的全部内容。有一个问题。

这怎么不是一个与MVC 4兼容的解决方案?我认为WebMatrix是一个比标准表单身份验证更好的解决方案。注册方法的返回值是激活令牌。至于发送电子邮件的代码。。好吧,那是谷歌搜索。@trickry-初学者网站模板不使用Controller。所有的逻辑都在剃刀页面中。我希望在使用MVC模式的MVC项目中使用该功能;这是我在谷歌搜索中找不到的。