16

ASP.Net MVC 4 プロジェクトのデフォルトのインターネット アプリケーション テンプレートを使用しています。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 のスターター サイト テンプレートは WebSecurity を使用しており、探している機能を提供していますが、標準の MVC パターンに従っていません。両方のアプローチをブレンドして MVC 4 と互換性のあるソリューションに到達することはできますが、時間を節約するためにすぐに使用できるコードを探しています。良いサンプルやポインタは大歓迎です。ありがとうございました。

4

1 に答える 1

32

実際、SimpleMembership は 2 段階の確認をサポートするように配線されています。 このブログ投稿にアクセスして、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}) として confirmToken を持つ新しい Web ページ (コントローラー/アクション) へのリンクが含まれます。ユーザーがリンクをクリックすると、コードはWebSecurity.ConfirmAccountを使用して確認を実行します。MVC 4 アプリケーションにメール確認を追加するために必要な作業はこれだけです。メール確認を MVC 4 に追加するためのステップバイステップ ガイドがここにあります

于 2013-01-30T16:26:54.880 に答える