簡體   English   中英

為什么有時我的onauthenticate事件處理程序被調用兩次?

[英]why my onauthenticate event handler being called twice sometimes?

我正在使用asp:login控件來驗證用戶名和密碼。 以下是控件。 為了跟蹤登錄嘗試,我使用了會話變量LoginCount。 我們只允許嘗試3次。 另外,我們使用WebControlAdapter來定制asp:login控件。 但是,有時,事件處理程序Login1_Authenticat有時會被調用兩次,這會使LoginCount增加2,僅需嘗試一次。 有人可以幫我弄清楚哪里出了問題嗎?

<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

也許是因為您的用戶在“登錄”按鈕上單擊了兩次? 在發布到服務器之前使用一些js代碼禁用客戶端中的按鈕該怎么辦? 向OnClientClick添加javascript函數以禁用該按鈕並避免這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM