2017-11-23 3 views
0

SQLMemberShipProvider를 사용하고 있습니다.암호 변경 후 MembershipProvider 유효성 검사가 실패합니다.

사용자 이름과 암호를 입력하면 다음 코드가 membershipProvider.ValidateUser(myUserName, myPassword)으로 실행되고 사용자가 유효 함을 나타내는 true을 반환합니다.

내가 다음 코드로 암호 재설정 : 내 이름과 새로운 변경된 암호를 입력 할 때 지금

var username = membershipProvider.GetUser(myUserName, false); 
username.ChangePassword(username.ResetPassword(), newPassword); 

을 다음 다시 membershipProvider.ValidateUser(myUserName, newPassword)을 실행하지만 이번에는 검증이 실패합니다.

ValidateUser 두 호출에 동일한 공급자를 사용하고 있으므로이 내용을 이해하지 못합니다. 원래 비밀번호가 더 이상 유효하지 않으므로 비밀번호가 변경된 것으로 보입니다.

암호 형식은 해시이고 IsLocked는 false이며 IsApproved는 true입니다.

답변

0

코드가 좋아 보인다. resetPassword이 당신의 Web.config에서 true로 설정되어 있기 때문에 이것은 대부분의 porbably 발생하는되어

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
    <add name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="SqlServices" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="true" 
     passwordFormat="Hashed" 
     applicationName="MyApplication" /> 
    </providers> 
</membership> 

이 enablePasswordReset = "진정한"이 설정되어 있는지 확인합니다.

+0

안녕하세요 Abhishek, enablePasswordReset이 true로 설정되었습니다. – p0enkie

+0

이것은 PEBKAC 문제 였지만 사용 된 새 암호가 공급자에서 설정 한 암호 정규 표현식을 준수하지 않아 유효성 검사에 실패했습니다. 이 암호를 Regex를 만족시키는 것으로 변경하면 예상대로 작동합니다. – p0enkie