sourcecode

현재 암호를 모르는 경우 asp.net 멤버십 제공자를 사용하여 해시 암호를 변경하는 방법은 무엇입니까?

copyscript 2023. 9. 26. 22:29
반응형

현재 암호를 모르는 경우 asp.net 멤버십 제공자를 사용하여 해시 암호를 변경하는 방법은 무엇입니까?

문제야, 방법이 없어요.

bool ChangePassword(string newPassword);

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

이것은 제가 너무 많은 시간을 낭비한 쉬운 것입니다.이 게시물이 나만큼 이마를 세게 때리는 고통을 다른 사람이 덜어주기를 바랍니다.

해결 방법은 비밀번호를 임의로 재설정하고 변경 방법에 전달합니다.

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

에서 QuestionAndAnswer="true"가 필요한 경우 암호를 변경할 수 없습니다.

이 일은 내가 해결해야 할 일입니다.

web.config에서 두 개의 멤버쉽 프로바이더를 만들었습니다.

aspNetSqlMembershipProviderReset 프로바이더는 기본 프로바이더로 사용되지만 requiredQuestionAndAnswer= false를 사용하므로 암호 재설정을 위해 사용하고 있습니다.

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

public bool ResetUserPassword(StringpsUserName, StringpsNewPassword) { 필수 질문 응답이 false로 설정된 두 번째 멤버쉽 제공자를 사용하여 { // 멤버십 사용자 세부 정보 가져오기를 시도하십시오.

        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

반응형