使用jQuery ajax进行表单身份验证

时间:2012-04-01 18:05:49

标签: asp.net jquery forms-authentication

我正在尝试使用jquery实现身份验证,以向对用户进行身份验证的页面方法发出ajax请求。这是我在下面编写的基本示例。实际应用程序更复杂,并且不使用页面方法来处理身份验证。问题是User对象中的isAuthenticated属性始终为false。这个项目是在vb中完成的,但我不介意答案/代码是否在c#中。

Ajax请求:

$.ajax({
    type: 'POST',
    url: 'default.aspx/authenticateUser',
    data: "{ username: '" + username + "', password: '" + password + "' }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (d) {
        if (d.d == true) {
            window.location.href = '/registrants/home.aspx';
        }            
    }
});

页面方法:

<WebMethod()>
Public Shared Function authenticateUser(ByVal username As String, ByVal password As String) As Boolean
    If (isAuthenticated(username, password)) Then
        Dim ticket As New FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(3), False, "member")
        Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket))
        HttpContext.Current.Request.Cookies.Add(cookie)
        Return True
    End If
    Return False
End Function

1 个答案:

答案 0 :(得分:3)

看来问题是由于我误解了何时使用HttpContext.Current.Request与HttpContext.Current.Response。简单的错误。我找到了答案here。一旦请求被发送到页面方法进行验证,就必须使用HttpContext.Current.Response设置cookie并使用HttpContext.Current.Request检索。