사용자 지정 멤버 자격 공급자를 구현했으며이 공급자를 사용하는 웹 페이지에 암호 변경 컨트롤이 있습니다. 이 멤버 자격 공급자 클래스의 ChangePassword 메서드는 외부 웹 서비스에 연결하여 암호 강도 및 유효성에 대한 비즈니스 논리를 확인합니다. webservice는 새로운 암호가있는 경우 정확히 무엇이 잘못되었는지 (길이 문제, 특수 문자 필요 등) 정확하게 반환 할 수있는 기능이 있습니다.멤버 자격 공급자 ChangePassword 메서드 반환 형식 문제
이제, 사용자 지정 공급자에 의해 오버라이드 (override) 할 수있는과 changepassword 방법의 서명이 : 그래서
public override bool ChangePassword(string username, string oldPassword, string newPassword)
나는 사용자가 제공 새로운 암호를 사용하여 정확한 문제를 알면서도, 나는 수 없습니다입니다 이 메서드에서 true 또는 false 만 반환 할 수 있기 때문에 웹 페이지에 표시하려면 변경 암호 컨트롤을 사용하고 부울 반환 값에 따라 자체 마법을 수행합니다. OnChangePasswordError
이벤트를 ChangePassword
컨트롤에 연결하여 정적 오류 메시지를 표시하거나 오류가 발생하면 하드 코드 된 문자열에이 컨트롤의 FailureText
속성을 설정할 수도 있습니다. 그러나 사용자에게 무엇을 제공 할 수 없는지 그들이 제공 한 암호가 정확히 잘못되었습니다.
protected void OnPasswordChangeError(object sender, EventArgs e)
{
throw new MembershipPasswordException("Tell user what exactly is wrong with the password they supplied");
}
MembershipProvider
클래스는 암호를 변경하기 전에이 발생하는 ValidatingPassword
이벤트를 가지고, 나는 암호가 기준을 충족하는 경우 확인하여 여기에 예외를 던질 수 있지만, 여전히 예외가 전달하지 않는 것 ChangePassword 컨트롤.
void MyMembershipProvider_ValidatingPassword(object sender, ValidatePasswordEventArgs e)
{
//if password not valid
e.Cancel = true;
e.FailureInformation = new MembershipPasswordException();
e.FailureInformation;
}
하는 방법을 사용자에게 올바른 비 정적/하드 비밀번호 변경 오류 메시지를 표시 할과 changepassword 컨트롤에 멤버 자격 공급자 클래스의과 changepassword 방법에서 특정 정보를 전송 다음은 ValidatingPassword 이벤트 핸들러의 코드는 ? ChangePassword 컨트롤에서 FailureInformation을 얻을 수 있도록 OnChangePassword 메서드에 대한 EventHandler의 ValidatePasswordEventArgs를 EventArgs에 연결하는 방법이 있습니까?
내 초기 연구에서 이것은 가능하지 않은 것처럼 보입니다. 비록 MS 팀이 이것을 간과하지 않았을 것이라고 생각하지만, 방법이 있어야합니다.
몇 포인터 :
MembershipUser.ChangePassword fails without warning http://forums.asp.net/t/983613.aspx
오, 내 눈! 이 제목은 불타고 있습니다! 조금 넣어주세요. –
대단히 감사합니다! –
나는 그것을 포기하지 않을 것이지만 데이터베이스 나 다른 것에 쓰는 것과 같은 해킹이 필요하다고 생각합니다. – Greg