MembershipService.ChangePassword不会更改密码问题

时间:2012-07-11 00:12:01

标签: c# asp.net-mvc-3

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

1 个答案:

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

希望它有所帮助!