我正在尝试使用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
答案 0 :(得分:3)
看来问题是由于我误解了何时使用HttpContext.Current.Request与HttpContext.Current.Response。简单的错误。我找到了答案here。一旦请求被发送到页面方法进行验证,就必须使用HttpContext.Current.Response设置cookie并使用HttpContext.Current.Request检索。