반응형
현재 비밀번호를 모르면 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;
}
}
반응형
'program tip' 카테고리의 다른 글
Angular 2-외부 URL로 리디렉션하고 새 탭에서 열기 (0) | 2020.12.15 |
---|---|
Vue Js-v-for X 회 (범위 내)를 통한 루프 (0) | 2020.12.15 |
Linux에서 Perl 스크립트를 시스템 데몬으로 실행하려면 어떻게해야합니까? (0) | 2020.12.15 |
a의 텍스트를 맨 위로 정렬하고 싶습니다. (0) | 2020.12.15 |
Git 저장소 Gitolite를 삭제 하시겠습니까? (0) | 2020.12.15 |