program tip

현재 비밀번호를 모르면 asp.net 멤버십 공급자를 사용하여 해시 된 비밀번호를 어떻게 변경합니까?

radiobox 2020. 12. 15. 18:54
반응형

현재 비밀번호를 모르면 asp.net 멤버십 공급자를 사용하여 해시 된 비밀번호를 어떻게 변경합니까?


문제, 방법이 없습니다.

bool ChangePassword(string newPassword);

현재 암호를 알아야합니다 (해시되고 잊어 버린 것 같습니다).


이것은 내가 너무 많은 시간을 낭비한 쉬운 것입니다. 바라건대이 게시물이 내가 한 것처럼 이마를 세게 두드리는 고통을 다른 사람에게 구할 수 있기를 바랍니다.

해결책, 비밀번호를 무작위로 재설정하고 변경 방법에 전달하십시오.

MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");

requiresQuestionAndAnswer = "true"인 경우 비밀번호를 변경할 수 없습니다.

이 문제를 해결했습니다.

web.config에 두 개의 멤버 자격 공급자를 만들었습니다.

저는 AspNetSqlMembershipProviderReset 공급자를 사용하여 AspNetSqlMembershipProvider가 사용되는 기본 공급자 인 requiresQuestionAndAnswer = false가 있으므로 암호를 재설정하는 데 사용하고 있습니다.

사용자의 비밀번호를 재설정하기 위해 다음 코드를 작성했습니다.

public bool ResetUserPassword (String psUserName, String psNewPassword) {try {// 필수 질문 답변이 false로 설정된 secound 멤버십 공급자를 사용하여 멤버십 사용자 세부 정보를 가져옵니다.

        MembershipUser currentUser = Membership.Providers["AspNetSqlMembershipProviderReset"].GetUser(psUserName,false);

        //Reset the user password.
        String vsResetPassword = currentUser.ResetPassword();            

        //Change the User password with the required password            
        currentUser.ChangePassword(vsResetPassword, psNewPassword);
        //Changed the comments to to force the user to change the password on next login attempt
        currentUser.Comment = "CHANGEPASS";
        //Check if the user is locked out and if yes unlock the user
        if (currentUser.IsLockedOut == true)
        {
            currentUser.UnlockUser();
        }
        Membership.Providers["AspNetSqlMembershipProviderReset"].UpdateUser(currentUser);            return true;
    }
    catch (Exception ex)
    {
        throw ex;
        return false;
    }
}

참조 URL : https://stackoverflow.com/questions/287320/how-do-you-change-a-hashed-password-using-asp-net-membership-provider-if-you-don

반응형