ASP.NET登录控件自定义身份验证失败

时间:2010-11-19 16:29:59

标签: asp.net .net-3.5 login-control

我的代码

protected void LogonForm_Authenticate(object sender, AuthenticateEventArgs e)
{
    bool auth = false;

    if (FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password))
    {
        auth = true;
    }

    e.Authenticated = auth;

}

导致错误。当我没有指定OnAuthenticate事件时,用户被验证它按预期工作。是什么给了什么?

我只是想调用默认的OnAuthenticate代码,然后在其末尾添加一个额外的检查。我在两种情况下都使用LDAP进行身份验证。

2 个答案:

答案 0 :(得分:2)

如MSDN文档中所述,如果您将凭据存储在Web.config文件中,则应使用FormsAuthentication.Authenticate方法:

<authentication mode="Forms">
    <forms loginUrl="login.aspx">
        <credentials passwordFormat="Clear">
            <user name="user1" password="password1" />
            <user name="user2" password="password2" />
        </credentials>
 </forms>
</authentication>

但是,如果您要验证继承自MembershipProvider抽象类(如SqlMembershipProvider,ActiveDirectoryMembershipProvider或其他自定义提供程序)的成员资格提供程序的凭据,则应使用Membership.ValidateUser方法。

我认为更换

if (FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password))

if (Membership.ValidateUser(LoginUser.UserName, LoginUser.Password))

将解决您的问题。

答案 1 :(得分:1)

您能提供更多代码吗?仅验证AUTHENTICATE的用户,它不设置cookie等。使用此方法确定用户名\密码是否有效(即如果它返回True)

尝试使用此设置cookie:

Dim boolVal as Boolean = FormsAuthentication.Authenticate(LogonForm.UserName, LogonForm.Password)
If boolVal Then
   FormsAuthentication.SetAuthCookie(LogonForm.UserName,False)
End If