2009-11-30 3 views
7

Je rencontre des problèmes pour créer un cookie non persistant à l'aide de FormsAuthenticationTicket. Je veux stocker userdata dans le ticket, donc je ne peux pas utiliser les méthodes FormsAuthentication.SetAuthCookie() ou FormsAuthentication.GetAuthCookie(). Pour cette raison, je dois créer le FormsAuthenticationTicket et le stocker dans un HttpCookie.Créer un cookie non persistant avec FormsAuthenticationTicket

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 isPersistent variable est vrai que tout fonctionne bien et le cookie est conservé. Mais lorsque isPersistent est faux, le cookie semble être conservé de toute façon. Je me connecte dans une fenêtre de navigateur, je le ferme et j'ouvre à nouveau le navigateur et je suis toujours connecté. Comment configurer le cookie pour qu'il ne soit pas persistant?

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?

Répondre

3

Essayez de supprimer:

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

... et le remplacer par:

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

Questions connexes