0

.net 2.0 で PasswordRecovery コントロールを使用するのに助けが必要です。私の状況は、アプリケーションがパスワード形式を Hashed から Clear に保存するように変更されたことです。

問題は、新しく作成されたユーザーにはクリアなパスワードが保存されており、ハッシュ化されたパスワードを持つユーザーがまだ残っていることです。ハッシュされたパスワードをまだ持っているユーザーに対して以下のように passwordRecovery コントロールを使用すると、ハッシュされたパスワードを持つ以前のユーザーの「PasswordFormat」フィールドは「クリア」に変更されません。

<asp:PasswordRecovery MailDefinition-BodyFileName="/mailTemplates/changePassword.htm" MailDefinition-From="test@test.com" MailDefinition-Subject="Test" CssClass="noLines" ID="PasswordRecovery1" UserNameTitleText="" UserNameInstructionText="Enter User name and a new passord will be generated and mailed to the user"  runat="server" SuccessText="Your password has been sent to your registered email address." SubmitButtonStyle-CssClass="button" 
    onsendingmail="PasswordRecovery1_SendingMail" MembershipProvider="AspNetSqlMembershipProviderF0005600">
    </asp:PasswordRecovery>

<membership>
  <providers>
    <remove name="AspNetSqlMembershipProviderF0005600"/>
    <add name="AspNetSqlMembershipProviderF0005600" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" passwordFormat="Clear" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
  </providers>
</membership>

(再投稿の前に謝罪)。

4

1 に答える 1

1

簡単に言うと、ハッシュ化されたパスワードを持つユーザーのこれを変更するには、メンバーシップストアドプロシージャを使用する必要があります。パスワードはハッシュ化されているため、(ハッシュアルゴリズムを破ることを除いて)とにかく回復されることはありません。

http://mishler.net/PermaLink,guid,ea65afc0-2970-46f1-9412-4b57bbd906f4.aspxを参照してください。記事の最後にある「パスワード形式の変更」セクションまでスクロールします。

リカバリページでは、ストアドプロシージャを実行してフォーマットを検索し、ユーザーがリカバリを使用することを決定したときにパスワードとフォーマットの両方を変更できます。ただし、より積極的に、すべてのハッシュユーザーパスワードを変更し、パスワードがリセットされたことを使用者に電子メールで送信することができます。

于 2009-07-01T17:24:23.477 に答える