Question

Je ne parviens pas à créer un cookie non persistant à l'aide du FormsAuthenticationTicket. Je souhaite stocker des données utilisateur dans le ticket, je ne peux donc pas utiliser les méthodes FormsAuthentication.SetAuthCookie () ou FormsAuthentication.GetAuthCookie (). C'est pourquoi je dois créer le FormsAuthenticationTicket et le stocker dans un HttpCookie.

Mon code ressemble à ceci:

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

Lorsque la variable isPersistent est vraie, tout fonctionne correctement et le cookie est conservé. Mais quand isPersistent est faux, le cookie semble persister de toute façon. Je me connecte dans une fenêtre du navigateur, le ferme et ouvre à nouveau le navigateur. Je suis toujours connecté. Comment définir le cookie sur non persistante?

Un cookie non persistant est-il identique à un cookie de session? Les informations de cookie sont-elles stockées dans les données de session sur le serveur ou le cookie est-il transféré dans chaque requête / réponse au serveur?

Était-ce utile?

La solution

Essayez de supprimer:

if (est persistant)     {cookie.Expires = expiration; }

... et le remplacer par:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top