我正在使用asp:login控件来验证用户名和密码。以下是控制。要跟踪登录尝试,我使用会话变量LoginCount。我们只允许三次尝试。此外,我们使用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
答案 0 :(得分:0)
也许是因为您的用户在“登录”按钮上单击了两次?在发布到服务器之前,如何使用某些js代码在客户端禁用该按钮?将一个javascript函数添加到OnClientClick以禁用该按钮并避免这种情况。