2012-04-01 18 views
4

Ich versuche, die Authentifizierung mithilfe von Jquery zu implementieren, um eine AJAX-Anforderung an eine Seitenmethode zu stellen, die einen Benutzer authentifizieren würde. Dies ist ein grundlegendes Beispiel, das ich unten codiert habe. Die eigentliche Anwendung ist komplexer und verwendet keine Seitenmethode für die Authentifizierung. Das Problem besteht darin, dass die Eigenschaft isAuthenticated im Benutzerobjekt immer falsch ist. Dieses Projekt ist in vb gemacht, aber es macht mir nichts aus, wenn Antworten/Code in C# sind.Formularauthentifizierung mit jQuery ajax

Ajax-Anfrage:

$.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'; 
     }    
    } 
}); 

Seite Methode:

<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 

Antwort

3

Es scheint, das Problem zu meinem Missverständnis zurückzuführen ist, wenn HttpContext.Current.Request zu verwenden vs. HttpContext.Current.Response. Ein einfacher Fehler. Ich habe die Antwort here gefunden. Sobald die Anfrage an die Seitenmethode zur Überprüfung gesendet wurde, musste der Cookie mit HttpContext.Current.Response gesetzt und mit HttpContext.Current.Request abgerufen werden.