2

Stackoverflow utilise OpenId comme de nombreux autres sites Web. Cependant, j'ai rarement besoin de fournir mon OpenId à Stackoverflow alors qu'avec d'autres sites Web compatibles avec OpenId, je dois le faire une fois par jour ou par semaine. Cela me suggère que l'expiration de la session est avec le site Web et non avec le fournisseur OpenId. En regardant le code DotNetOpenId dans ASP MVC, je constate qu'après une authentification réussie par le fournisseur OpenId, FormsAuthentication.SetAuthCookie est appelé avec l'identifiant et un paramètre booléen pour déterminer si le cookie doit être conservé.Authentification OpenId ASP MVC avec expiration longue durée

Comment puis-je forcer l'expiration de ce cookie, par exemple en 2020 au lieu de la valeur par défaut?

Répondre

4

De MSDN - Explained: Forms Authentication in ASP.NET 2.0:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
    "userName", 
    DateTime.Now, 
    new DateTime(2020, 01, 01), // value of time out property 
    false, // Value of IsPersistent property 
    String.Empty, 
    FormsAuthentication.FormsCookiePath); 

string encryptedTicket = FormsAuthentication.Encrypt(ticket); 

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

authCookie.Secure = true; 

Response.Cookies.Add(authCookie); 
+0

+1 Le code source est toujours utile –

+3

Vous ne devez pas faire tout ce travail bien. Il suffit de changer la valeur du délai d'attente dans votre fichier web.config: http://msdn.microsoft.com/fr-fr/library/1d3t3c61.aspx –

+1

En effet, vous avez raison. Mais Khash peut vouloir programmer l'heure d'expiration de cookie par programme? –

1

Vous pouvez utiliser FormsAuthentication.RenewTicketIfOld() pour mettre à jour le ticket. Cette méthode vérifie si le ticket actuel a expiré et sinon, pour prolonger son expiration. Vous pouvez appeler cette méthode à chaque demande sur votre site, ce qui va "faire glisser" l'expiration plus loin à l'avenir, car l'utilisateur continue à utiliser votre site.

Questions connexes