Criar bolinho não persistente com FormsAuthenticationTicket
-
10-07-2019 - |
Pergunta
Estou tendo problemas para criar um cookie não persistente usando o FormsAuthenticationTicket. Eu quero armazenar userdata no bilhete, por isso não posso usar FormsAuthentication.SetAuthCookie () ou FormsAuthentication.GetAuthCookie () métodos. Devido a essa necessidade I para criar a FormsAuthenticationTicket e armazená-lo em um HttpCookie.
Os meus olhares código como este:
DateTime expiration = DateTime.Now.AddDays(7);
// Create ticket
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2,
user.Email,
DateTime.Now,
expiration,
isPersistent,
userData,
FormsAuthentication.FormsCookiePath);
// Create cookie
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
cookie.Path = FormsAuthentication.FormsCookiePath;
if (isPersistent)
cookie.Expires = expiration;
// Add cookie to response
HttpContext.Current.Response.Cookies.Add(cookie);
Quando o isPersistent variável é verdade tudo funciona bem e o cookie é persistente. Mas quando isPersistent é falso o cookie parece ser persistentes de qualquer maneira. Eu assinar em uma janela do navegador, fecha e abre o navegador novamente e eu ainda estou logado. Como faço para configurar o cookie para ser não-persistente?
É um cookie não persistente o mesmo que um cookie de sessão? É as informações do cookie armazenado no sessiondata no servidor ou se o cookie transferidos em cada pedido / resposta para o servidor?
Solução
Tente excluir:
if (isPersistent)
{ cookie.Expires = expiration; }
... e substituindo-o:
if (!isPersistent) {
cookie.Expires = DateTime.Now.AddYears(-1); }