web-dev-qa-db-ja.com

MVC4でSimpleMembershipを使用してパスワードをリセットまたは変更するにはどうすればよいですか?

私はMVC4インターネットテンプレートを使用してWebアプリケーションを作成しています。ユーザー管理に複雑なことはまったく必要なかったので、デフォルトのSimpleMembershipProviderを使用しました。 App_Startのメンバーシップを初期化し、役割とユーザーを設定して機能させています。私はSSOまたは他のOAuth=機能のいずれかを使用していません。今、彼のパスワードを忘れたテスターがいます。それを変更!

ドキュメントを確認したところ、ResetPassword関数 SimpleMembershipを使用している場合はサポートされていません であることがわかりました。私の質問は、次のいずれかです:

  1. simpleMembershipからSimpleMembershipテーブルとフォーマットを使用する標準メンバーシップに切り替える
  2. ユーザーのパスワードを指定したものにリセットしますか?

(理論的には)メンバーシッププロバイダーをSimpleMembershipを使用するように設定するweb.config設定を見つけましたが、使用するテーブルを指定する方法がわかりません(それが正しい方法であると想定しています)。

web.configセクション:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

そして、私が(思う)web.configに必要な現在のInitializeDatabaseConnection:

WebSecurity.InitializeDatabaseConnection("UPEFSSecurity", "Datamart_User", "UserId", "UserName", autoCreateTables: true);
18
Elsimer

これを適切に行うには、メール復旧リンクを設定する必要があります。しかし、これがあなたが行うAPI呼び出しです:

var token = WebSecurity.GeneratePasswordResetToken(username);
// create a link with this token and send email

// link directed to an action with form to capture password
WebSecurity.ResetPassword(token, password);

http://msdn.Microsoft.com/en-us/library/webmatrix.webdata.websecurity.resetpassword(v = vs.111).aspx

45
Jasen