0

この問題を最初に経験したのは私ではありません。簡単な解決策を見逃しているに違いありません。サイトを保護するために、SqlMembershipProvider によるフォーム認証を使用して保護された非公開の ASP.NET サイトを継承しました。開発者が手動でデータベースに追加したユーザーで、すべてが正常に機能しています。

特権ユーザーがユーザー アカウントを追加および変更できるようにするには、管理ページを追加する必要があります。メンバーシップ プロバイダーを使用すると、非常に簡単に作成できますが、SqlMembershipProvider で現在抱えている問題は、質問/回答の要件です。管理者は、他のユーザーのパスワードを一時パスワードにリセットし、新しいユーザー アカウントを作成できる必要があります (これも一時パスワードを使用します)。パスワードをリセットするには、ユーザーの質問に対する回答または現在のパスワードが必要です。

もちろん、すべてのアカウントに「質問」と「回答」のようなものを入れることもできますが、これを行うとセキュリティ上のリスクが懸念されます. 多分私はあまりにも偏執的です。カスタム メンバーシップ プロバイダーを作成しても、多くの作業が必要であるだけでなく、メンバーシップ プロバイダー ベースにも同じ要件があるため、この問題は解決されません。

ありがとうございました。

4

1 に答える 1

2

パスワードをリセットするには、ユーザーの質問に対する回答または現在のパスワードが必要です

現在 question/answers を使用していない場合は、web.config でこれをオーバーライドできます。

requiresQuestionAndAnswer="false"

その後、次のことができます。

        string requesteduserGUIDstring = "some GUID";
        Guid UserID = new Guid(requesteduseridstring.ToUpper());
        MembershipUser mu = Membership.GetUser(UserID);
        mu.ChangePassword(mu.ResetPassword(), tbNewPassword.Text);

質問/回答を使用している場合は、web.config に2 番目のプロバイダーを追加し、そのプロバイダーに対してのみ同じオーバールールを設定し、パスワードのリセット機能にのみそのプロバイダーを使用することができます。

于 2011-06-20T13:24:57.437 に答える