2009-12-18 8 views
3

Je configure le cookie d'authentification dans C# comme persistant et avec une date de fin d'ici un an, mais il expire pas trop longtemps après avoir été défini. Le code est ci-dessous ...C# .net - l'authentification expire prématurément

DateTime endDate = new DateTime(); 
endDate = DateTime.Now.AddYears(1); 

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
                  username, 
                  DateTime.Now, 
                  endDate, 
                  true, 
                  userId.ToString(), 
                  FormsAuthentication.FormsCookiePath); 


string encryptedTicket = FormsAuthentication.Encrypt(ticket); 

HttpCookie authCookie = new HttpCookie(
         FormsAuthentication.FormsCookieName, 
         encryptedTicket); 

authCookie.Expires = endDate; 

Response.Cookies.Add(authCookie); 

Des idées?

+0

Quand vous dites "pas trop long", combien de temps voulez-vous dire? Avez-vous utilisé un outil comme HttpWatch pour déterminer si le cookie n'est plus envoyé ou si l'authentification par formulaire ne le reconnaît plus? L'authentification par formulaires –

+0

ne reconnaît pas la personne comme étant connectée après environ 30 minutes. Je n'ai pas essayé d'utiliser HttpWatch, mais j'ai utilisé une vue que les cookies ajoutent dans firefox pour m'assurer que les cookies existaient et qu'ils avaient la bonne date d'expiration. J'ai vu deux cookies présents, l'un étant .ASPXAUTH avec la date d'expiration correcte, et un autre ASP.NET_SessionId avec "Session" comme date d'expiration. – Tija

Répondre

3

I figured it out ... quand je vérifier si l'utilisateur a été authentifié, je le code suivant ...

if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated) 
{ 
    return true; 
} 

quand j'ai enlevé la première vérification (c.-à-HttpContext.Current.User ! = null) il a commencé à travailler. Bien que je ne comprends pas vraiment comment HttpContext.Current.User.Identity.IsAuthenticated pourrait être vrai lorsque HttpContext.Current.User null.

De toute façon, cela fonctionne maintenant, donc pas de problème.

Questions connexes