0

Я разработал веб-сайт с ASP.NET. Теперь я делаю аутентификацию.FormsAuthenticationTicket исчез после Response.Redirect operation

Авторизация создана другой веб-службой. Если ответ от веб-сервиса является успех, я создать билет:

var ticket = new FormsAuthenticationTicket(1, param.Login, DateTime.Now, DateTime.Now.AddDays(1), false, string.Empty, FormsAuthentication.FormsCookiePath); 
      var encTicket = FormsAuthentication.Encrypt(ticket); 

      var AuthCookie = new HttpCookie(FormsAuthentication.FormsCookieName) 
      { 
       Value = encTicket, 
       Expires = DateTime.Now.AddDays(1) 
      }; 

      Response.Cookies.Set(AuthCookie); 

Этот код добавляется печенье подлинности. Но если я добавлю следующую строку после предыдущего кода:

   Response.Redirect("<redirect address>"); 

cookie исчез после перенаправления.

Почему это произошло?

web.config часть аутентификации здесь:

<authentication mode="Forms"> 
    <forms name=".ASPXFORMSAUTH" loginUrl="~/login.ashx" /> 
</authentication> 
+0

в Response.Redirect(), вы направляете пользователя на тот же сайт или на внешний веб-сайт? В случае, если вы направляетесь на тот же веб-сайт, появляется ли страница входа после выполнения Response.Redirect()? –

+0

Я перенаправляю пользователя на тот же сайт. – Elena

ответ

0

Может случиться так, что данные, печенье, связанный с куки превысила максимально допустимого размер в зашифрованном формате. Нешифрованные данные не будут слишком большими.

Большой размер файла cookie может привести к удалению файла cookie из заголовка ответа. Ниже затруднительные стоит попробовать:

  • уменьшить количество набора данных в печенье
  • Try печенья только один раз в незашифрованном формате. Таким образом, вы получите подтверждение, что это действительно размер печенья, который создает проблему

Это POST дает хорошую информацию о размере Cookie.