2016-12-13 5 views
0

Я делаю проверку подлинности форм следующим образом:Проверки подлинности форм не работает с 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; 
      } 

затем на другой странице у меня есть JQuery следующего

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

вопрос находится в on_load случае приборной панели. aspx, всегда указано значение

HttpContext.Current.User.Identity.IsAuthenticated 

вопрос в том, что он считает, что пользователь не является проверку подлинности.

любая помощь будет очень признательна.

+0

Это кажется почти нормально. Вы отлаживали и видите, что имя пользователя/пароль передается должным образом? –

+0

Да, я проверил переменную «cookie», и есть данные внутри. – user1144596

+0

Ajax отлично выглядит. Я думаю, проблема связана с кодом C#. Что такое ** strRole ** и получает ли он значение? –

ответ

1

Добавление следующих решается в Global.asax.cs проблему

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; 
    } 

Взятые из https://stackoverflow.com/a/8490241/1144596

Смежные вопросы