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?

Foi útil?

Solução

Tente excluir:

if (isPersistent) { cookie.Expires = expiration; }

... e substituindo-o:

if (!isPersistent) { cookie.Expires = DateTime.Now.AddYears(-1); }

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top