16

我正在使用 ASP.Net MVC 4 项目的默认 Internet 应用程序模板。Account 控制器中的 Register 操作是这样的 -

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

4

1 回答 1

32

实际上 SimpleMembership 支持两步确认。 转至此博客文章,了解如何扩展 UserProfile 以包含 Email 属性。修改注册视图以捕获电子邮件。现在,当您创建新用户时,请像这样使用CreateUserAndAccount

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

现在,您只需使用您最喜欢的 ASP.NET MVC 电子邮件方法将 ConfirmationToken 通过电子邮件发送给用户。我喜欢Postal,因为您可以使用 Razor 引擎生成电子邮件正文。电子邮件正文将包含指向新网页(控制器/操作)的链接,该网页以确认令牌作为 id ({controller}/{action}/{id})。当用户单击链接时,您的代码将使用WebSecurity.ConfirmAccount执行确认。这就是将电子邮件确认添加到您的 MVC 4 应用程序所需的全部内容。这里有一个将电子邮件确认添加到 MVC 4 的分步指南

于 2013-01-30T16:26:54.880 回答