私は、ASP.NET MVCデモに付属の標準SqlMembershipProviderを使用しています。ASP.NET MVCで「パスワードをお忘れですか?」を実装する方法を教えてください。
私は自分のサイトに「パスワードをお忘れですか?」リンクを実装することに興味があります。
この機能を実装する正しい方法は何ですか?パスワードを一時的なもので上書きして、登録されたメールにメールで送信する必要がありますか?
私は、ASP.NET MVCデモに付属の標準SqlMembershipProviderを使用しています。ASP.NET MVCで「パスワードをお忘れですか?」を実装する方法を教えてください。
私は自分のサイトに「パスワードをお忘れですか?」リンクを実装することに興味があります。
この機能を実装する正しい方法は何ですか?パスワードを一時的なもので上書きして、登録されたメールにメールで送信する必要がありますか?
プロバイダが自動的にリセットを行います。
http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.resetpassword.aspx
サンプルだけでブラウザに新しいパスワードを返す代わりに、ユーザーをメールが、で構成することができます秘密の質問/回答を使用していますプロバイダ。
このサンプルでは、パスワードや電子メール、それを取得します。
http://msdn.microsoft.com/en-us/library/system.web.security.sqlmembershipprovider.getpassword.aspx
私はどちらかのアプローチが安全だと思います。ユーザーがアカウントをハックするために質問/回答と電子メールパスワードを知っておく必要があるため、ステップバイステップの電子メールは少し安全です。
私はこれらのサンプルがMVCを使用していないことを認識していますが、あなたが動くのに十分だと思います。 :)
アプリケーションの性質に基づいて、忘れてしまったパスワードのベストプラクティスは、ユーザーが3〜5の最大のためにシークレット/質問を確認できるようにし、次の順序
URLを推測することは不可能なリンクをユーザに電子メールで送信する方がよいでしょう(ランダムなGuidが含まれていることをユーザーがクリックすると、パスワードをリセットできます)。一つだけ使用するために、設定時間後に期限切れにする必要があります。
それはあなたが使用しているメンバーシッププロバイダーの種類によって異なります。 しかし、私は詳細については、認証のためのシンプルなメンバシッププロバイダを使用することをお勧めします please visit the following link
ここにありますあなたのためのコード
[HttpPost]
[AllowAnonymous]
public ActionResult ForgotPassword(ForgotPasswordModel model)
{
.
.
.
.
if (WebSecurity.UserExists(model.UserName))
{
var token = WebSecurity.GeneratePasswordResetToken(model.UserName, 60);
.
.
.
.
// send this token by email
}
else
{
ModelState.AddModelError("", "Could not find User");
}
}
return View(model);
}
[HttpPost]
public ActionResult ResetPassword(ResetPasswordModel model)
{
string token = Request.Params["token"];
if (!string.IsNullOrEmpty(token))
{
if (WebSecurity.ResetPassword(token, model.NewPassword))
{
// send email…….. or
return View();
}
}