.net MembershipProvider和PasswordRecovery控件

.net MembershipProvider和PasswordRecovery控件,.net,security,.net-2.0,asp.net-membership,passwords,.net,Security,.net 2.0,Asp.net Membership,Passwords,我需要使用.NET2.0中的PasswordRecovery控件的帮助。我的情况是,应用程序已从以哈希格式存储passwordformat更改为Clear 问题是新创建的用户存储了一个清晰的密码,仍然有用户使用哈希密码。当我为仍然拥有哈希密码的用户使用下面的passwordRecovery控件时,“PasswordFormat”字段对于那些之前拥有哈希密码的用户不会更改为“clear” <asp:PasswordRecovery MailDefinition-BodyFileName="/

我需要使用.NET2.0中的PasswordRecovery控件的帮助。我的情况是,应用程序已从以哈希格式存储passwordformat更改为Clear

问题是新创建的用户存储了一个清晰的密码,仍然有用户使用哈希密码。当我为仍然拥有哈希密码的用户使用下面的passwordRecovery控件时,“PasswordFormat”字段对于那些之前拥有哈希密码的用户不会更改为“clear”

<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>

在MembershipProvider中不能有多个密码存储方案。您必须为所有拥有hasehd密码的用户重置密码,并在其电子邮件中使用用户名向他们发送新自动生成的密码

您必须将所有用户的密码带到hasehd或清除

必须有一个统一的 密码存储 会员资格提供商。


这是正确的。您不需要Microsoft文档来验证他的断言,这是哈希密码的固有特性。一旦对密码进行哈希运算,就无法恢复密码。这就是散列的本质——它是一种单向操作。如果它是双向的,它将是加密——而不是散列


因此,如果您从散列密码切换到纯文本密码,则必须重置散列密码的每个人的密码。无法找回他们的密码——必须为他们分配新密码。

您好,非常感谢您的回答。是否有Microsoft文档也声明了您的断言,即所有密码都必须经过哈希、清除或加密?我还没有遇到过这样的密码,我甚至不认为它可能存在。提供者将有自己的单一机制来读取和写入密码。因此,如果将其配置为在哈希模式下执行,则与清除模式不匹配。这并不是说它能做什么或不能做什么,仅仅通过能够从db读写并不能达到目的,因为db不知道格式。