MembershipService.ChangePassword
不会更改密码问题。我不知道为什么......
var userUsers = from n in db.aspnet_Users where n.UserId == id select n;
string userName = userUsers.Single<aspnet_Users>().UserName;
MembershipUser user = Membership.GetUser(userName, false);
if (user != null)
{
string generatedPassword = user.ResetPassword();
if (MembershipService.ChangePassword(userName, generatedPassword, model.NewPassword))
{
// So it doesn't change the password
答案 0 :(得分:2)
在文档中检查this:
如果密码已成功更新,ChangePassword将返回
true
。 否则,它返回false
。
在更改密码之前,ChangePassword
会调用提供程序的可覆盖OnValidatingPassword
方法来验证新密码。然后更改密码或根据通话结果取消操作。
如果没有用户名,密码,新密码或密码答案 有效,
ChangePassword
不会抛出异常;它只是返回 假的。
密码更改成功后,ChangePassword
会更新用户的LastPasswordChangedDate
。
当我遇到完全相同的问题时,这对我有所帮助。密码无效,因此该方法从未真正更改过。我在web.config
文件中更改了一些密码配置,然后终于工作了。
检查web.config的这一行,这可能是问题所在:
<membership defaultProvider="Demo_MemberShipProvider">
<providers>
<add name="Demo_MemberShipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="cnn"
enablePasswordRetrieval="false"
**enablePasswordReset="true"**
**requiresQuestionAndAnswer="true"**
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
**minRequiredPasswordLength="5"**
**minRequiredNonalphanumericCharacters="0"**
passwordAttemptWindow="10" passwordStrengthRegularExpression="">
</providers>
</membership>
希望它有所帮助!