2

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
4

1 回答 1

2

在文档中查看

true如果密码更新成功,ChangePassword 返回。否则,它返回false.

在更改密码之前,ChangePassword调用提供者的可覆盖OnValidatingPassword方法来验证新密码。然后它会根据调用结果更改密码或取消操作

如果用户名、密码、新密码或密码回答无效,ChangePassword不抛出异常;它只是返回false。

成功更改密码后,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>

希望能帮助到你!

于 2012-07-11T00:21:24.217 回答