我的代码
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进行身份验证。
答案 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