我正在使用SQLMemberShipProvider。
当我输入用户名和密码时,执行以下代码membershipProvider.ValidateUser(myUserName, myPassword)
并返回true
,表示该用户有效。
我使用以下代码重置密码:
var username = membershipProvider.GetUser(myUserName, false);
username.ChangePassword(username.ResetPassword(), newPassword);
现在,当我输入用户名和新更改的密码时,以下内容再次执行membershipProvider.ValidateUser(myUserName, newPassword)
,但这次验证失败。
我不明白这一点,因为我对ValidateUser
的两次调用都使用相同的提供程序。密码似乎已经改变,因为原始密码也不再有效。
密码格式经过哈希处理,IsLocked为false且IsApproved为真。
答案 0 :(得分:0)
代码看起来不错。这最常发生,因为在web.config中<_p>没有将resetPassword设置为true
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="MyApplication" />
</providers>
</membership>
确保enablePasswordReset =&#34; true&#34;已经确定了。