2013-11-21 2 views
0

사용자 이름과 암호를 확인하기 위해 asp : login 컨트롤을 사용하고 있습니다. 다음은 컨트롤입니다. 로그인 시도를 추적하기 위해 세션 변수 LoginCount를 사용합니다. 우리는 세 번만 시도 할 수 있습니다. 또한 WebControlAdapter를 사용하여 asp : login 컨트롤을 고객 화합니다. 그러나 어쨌든 때로는 이벤트 처리기 Login1_Authenticat가 두 번 호출되면 LoginCount가 2만큼 증가합니다. 한 번만 시도하면됩니다. 아무도 내가 잘못 된 곳을 찾아 낼 수있게 도와 줄 수 있습니까?내 onauthenticate 이벤트 처리기가 두 번 호출되는 경우가 있습니다.

<asp:Login 
     ID="Login1" 
     runat="server" 
     OnAuthenticate="Login1_Authenticate" 
     DestinationPageUrl="index.aspx" TitleText="" DisplayRememberMe="false" UserNameRequiredErrorMessage="Username is required." PasswordRequiredErrorMessage="Password is required." 
    /> 

    public class LoginAdapter : System.Web.UI.WebControls.Adapters.WebControlAdapter 
    { 
     private enum State 
     { 
      LoggingIn, 
      Failed, 
      Success, 
     } 
     State _state = State.LoggingIn; 

     ...  
     public LoginAdapter() 
     { 
      _state = State.LoggingIn; 
     } 

     /// /////////////////////////////////////////////////////////////////////////////// 
     /// PROTECTED   

     protected override void OnInit(EventArgs e) 
     { 
      base.OnInit(e); 

      Login login = Control as Login; 
      if (Extender.AdapterEnabled && (login != null)) 
      { 
       RegisterScripts(); 
       login.LoggedIn += OnLoggedIn; 
       login.LoginError += OnLoginError; 
       _state = State.LoggingIn; 
      } 
     } 
... 

업데이트 : LoginAdapter에서 버그로 판명되었습니다. 나는 다음 링크에서 제공되는 픽스를 지쳤다. https://cssfriendly.codeplex.com/workitem/234

+0

사용자 세션은 쿠키로 식별되므로 사용자가 세션 쿠키를 유지하지 않는 한 원하는만큼 여러 번 로그인을 시도 할 수 있습니까? –

답변

0

사용자가 로그인 버튼을 두 번 클릭했기 때문일 수 있습니까? 어떤 js 코드를 사용하여 서버에 게시하기 전에 클라이언트 측의 버튼을 비활성화하는 것은 어떻습니까? OnClientClick에 자바 스크립트 함수를 추가하여 버튼을 비활성화하고이를 피하십시오.

+0

아니요. 디버깅 할 때 문제가 있습니다. webcontroladapter를 비활성화하면 문제가 해결됩니다. 내 webcontroladapter 부분에 뭔가 문제가 있다고 생각하지만 어디 있는지 모르겠습니다. – GLP

관련 문제