ASP.Net MVC4プロジェクトのデフォルトのインターネットアプリケーションテンプレートを使用しています。アカウントコントローラーの登録アクションは次のようになります-
[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パターンに従っていません。両方のアプローチを組み合わせてMVC4互換ソリューションに到達することもできますが、時間を節約するためにすぐに使用できるコードを探しています。良いサンプルやポインタは大歓迎です。ありがとうございました。
実際、SimpleMembershipは、2段階の確認をサポートするように配線されています。 このブログ投稿に移動 UserProfileを拡張してEmailプロパティを含める方法を確認してください。電子メールをキャプチャするように登録ビューを変更します。新しいユーザーを作成するときは、 CreateUserAndAccount のように使用します。
string confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new{Email = model.Email}, true);
これで、ASP.NET MVCのお気に入りの電子メール方式を使用して、confirmationTokenを電子メールでユーザーに送信するだけです。私は 郵便 が好きです。Razorエンジンを使用してメールの本文を生成できるからです。電子メールの本文には、ID({controller}/{action}/{id})としてconfirmationTokenを持つ新しいWebページ(コントローラー/アクション)へのリンクが含まれます。ユーザーがリンクをクリックすると、コードは WebSecurity.ConfirmAccount を使用して確認を実行します。 MVC4アプリケーションに確認メールを追加するために必要なのはこれだけです。 ここにMVC 4に電子メール確認を追加するためのステップバイステップガイド があります。