18

MVC4 Internet テンプレートを使用して Web アプリケーションを作成しています。ユーザー管理に複雑なものは何も必要なかったので、デフォルトの SimpleMembershipProvider を使用しました。私は App_Start でメンバーシップを初期化しており、ロールとユーザーをセットアップして作業しています。SSO やその他の OAuth 機能を使用していません。今、パスワードを忘れたテスターがいて、一日中グーグルで検索した後、彼のパスワードをリセットまたは変更する方法がわからないことに気付きました!

ドキュメントを読んだところ、SimpleMembership を使用している場合、 ResetPassword 関数がサポートされていないことがわかりました。私の質問は、次のいずれかを行う方法です。

  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);
4

1 に答える 1

45

これを適切に行うには、電子メールの回復リンクを設定する必要があります。ただし、次の 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

于 2013-02-25T21:37:56.870 に答える