2010-03-17 4 views
1

멤버 자격 공급자없이 ChangePassword 컨트롤을 사용할 수있는 방법이 있습니까? 로그인 컨트롤이 Authenticate 이벤트를 통해 작동하는 것과 같은 방식으로,이 컴포넌트가 내 비밀번호 변경 기능을 사용하도록 설정 한 다음 사용자 정의 공급자를 작성하지 않고 성공보기를 표시 할 수 있습니까?공급자가없는 ChangePassword 컨트롤

감사합니다. 유진.

편집 : 반사판을 통해 몇 가지 조사가 나는이 컨트롤이는 MembershipProvider없이 완전히 쓸모가 있다는 결론에 도달 한 후

그냥 명확합니다. 구성 파일을 읽고 사용자 입력의 유효성을 검사하는 것과 같은 모든 논리 비트는 공급자에게 아웃소싱되기 때문에이 일반 코드도 작성해야합니다.

이 컨트롤 작업을 할 충분한 기능의 목록입니다

당신이 ChangePassword 함수에서 false를 반환하면 마지막 두에만 오류 메시지에 사용되는
public bool ChangePassword(string username, string oldPassword, string newPassword) 
public MembershipUser GetUser(string username, bool userIsOnline) 
public int MinRequiredNonAlphanumericCharacters { get; } 
public int MinRequiredPasswordLength { get; } 

.

답변

2

리플렉터를 통해 .NET 3.5 소스를 보면 ChangePassword 버튼 이벤트가 보호 된 OnBubbleEvent에 의해 감지되면 AttemptChangePassword()가 호출됩니다. 이 메소드의 구현은 다음과 거의 같습니다

  1. 해당 이벤트 핸들러에서 ChangingPassword 이벤트
  2. 에 처리기를 추가 컨트롤의 사용자 이름과 NEWPASSWORD 속성을 사용 : 당신이 할 수처럼

    private void AttemptChangePassword() { 
        ... 
        this.OnChangingPassword(loginCancelEventArgs); 
        if(!e.Cancel) { 
         MembershipProvider provider = LoginUtil.GetProvider(this.MembershipProvider); 
         ... 
    } 
    

    것 같습니다 나만의 맞춤 작업을 할 수 있습니다.

  3. 성공하면 새 URL로 리디렉션하거나 이벤트 args에 취소 플래그를 설정하고 ChangePassword 컨트롤을 수동으로 숨 깁니다. 이 기술을 사용하여 SuccessView를 사용하는 쉬운 방법으로 보이지 않습니다.

그래서 약간의 가능성이 있지만 컨트롤은 확실히이 사용을 염두에두고 설계되지 않았습니다. MembershipProvider는 꽤 유선입니다.

+0

감사합니다. 그리고 늦은 대답에 대해 유감스럽게 생각합니다. 당신의 대답은이 문제를 좀더 깊게 들여다 보게했습니다. –

관련 문제