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 に答える