2016-12-13 1 views
0

ich tue Formularauthentifizierung wie folgt:Formularauthentifizierung funktioniert nicht mit jQuery

   if (strRole != null) 
      { 
       FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
        1,       // version 
        username,      // user name 
        DateTime.Now,     // create time 
        DateTime.Now.AddSeconds(500), // expire time 
        false,      // persistent 
        strRole);      // user data 

       string strEncryptedTicket = FormsAuthentication.Encrypt(ticket); 
       HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, strEncryptedTicket); 
       Context.Response.Cookies.Add(cookie); 
       return true; 
      } 

dann auf einer anderen Seite i jQuery haben wie folgt

$.ajax({ 
    type: "POST", 
    crossOrigin: true, 
    url: "./WebService.asmx/Login", 
    data: JSON.stringify({'username':username,'password':password}), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (response) { 
     if (response.d === true) { 
      $(location).attr('href', '/dash/dashboard.aspx') 
     } 
     else { 
      ShowErrorModal("Invalid login or password.","login"); 
     } 
    } 
}); 

die Frage im on_load Fall Armaturenbrett ist. aspx Seite, die folgende ist immer falsch

HttpContext.Current.User.Identity.IsAuthenticated 

die Frage ist, was es Benutzer nicht berücksichtigt authentifiziert.

jede Hilfe wird sehr geschätzt.

+0

Es ist fast in Ordnung zu sein scheint. Haben Sie debugged und sehen, dass der Benutzername/das Passwort korrekt übergeben wurde? –

+0

Ja, ich habe die Variable "Cookie" überprüft und darin befinden sich Daten. – user1144596

+0

Ajax sieht gut aus. Ich denke, das Problem ist mit dem C# -Code. Was ist die ** strRole ** für und erhält sie den Wert? –

Antwort

1

, indem die folgenden in global.asax.cs das Problem gelöst

protected void Application_AuthenticateRequest(Object sender, EventArgs e) 
    { 
     string cookieName = FormsAuthentication.FormsCookieName; 
     HttpCookie authCookie = Context.Request.Cookies[cookieName]; 

     if (authCookie == null) 
     { 
      return; 
     } 
     FormsAuthenticationTicket authTicket = null; 
     try 
     { 
      authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
     } 
     catch 
     { 
      return; 
     } 
     if (authTicket == null) 
     { 
      return; 
     } 
     string[] roles = authTicket.UserData.Split(new char[] { '|' }); 
     FormsIdentity id = new FormsIdentity(authTicket); 
     GenericPrincipal principal = new GenericPrincipal(id, roles); 

     Context.User = principal; 
    } 

Entnommen https://stackoverflow.com/a/8490241/1144596

Verwandte Themen