Quel est le meilleur moyen de se déconnecter d'un utilisateur lorsqu'une session se termine ou expire?Comment se déconnecter d'un utilisateur lorsqu'une session expire ou se termine
Merci pour toute aide.
Quel est le meilleur moyen de se déconnecter d'un utilisateur lorsqu'une session se termine ou expire?Comment se déconnecter d'un utilisateur lorsqu'une session expire ou se termine
Merci pour toute aide.
Cela dépend vraiment de la fonctionnalité souhaitée que vous recherchez. Je vais supposer que vous utilisez FormsAuthentication.
Il y a deux choses distinctes dont vous avez besoin d'être préoccupé par: la session et le cookie FormsAuthentication. À moins que je me trompe, les deux ont des délais d'attente séparés.
Si le problème que vous rencontrez est que la session est expiré, mais l'utilisateur est authentifié, vous pouvez essayer encore une combinaison des éléments suivants:
1: Faire en sorte que le cookie d'authentification a la même valeur de délai d'attente comme la session:
<authentication mode="Forms"><forms ... timeout="20" ... ><authentication>
<sessionState ... timeout="20" ... />
2: Dans votre événement Page_Load, vérifiez si la session a expiré:
if (context.Session != null && Context.Session.IsNewSession == true &&
Page.Request.Headers["Cookie"] != null &&
Page.Request.Headers["Cookie"].IndexOf("ASP.NET_SessionId") >= 0)
{
// session has timed out, log out the user
if (Page.Request.IsAuthenticated)
{
FormsAuthentication.SignOut();
}
// redirect to timeout page
Page.Response.Redirect("/Timeout.aspx");
}
(Voir http://www.eggheadcafe.com/articles/20051228.asp pour plus d'informations sur la détection d'un délai de session)
Si vous voulez une expérience utilisateur plus agréable, vous pouvez utiliser javascript pour lancer une sorte de popup d'interface utilisateur modale après X minutes. Cette popup permettrait simplement à un utilisateur d'initier un clic-clic qui déclencherait une publication AJAX sur le serveur, étendant ainsi leur authentification et leur cookie de session sans qu'ils aient à recharger la page. Je n'ai jamais implémenté cela avant mais regardez, this guy made an ASP.NET AJAX control!
Merci Pandincus – zSynopsis
Si vous utilisez le fournisseur d'appartenances .net, juste définissez le paramètre Délai d'attente dans le web.config http://msdn.microsoft.com/en-us/library/h6bb9cz9(v=VS.100).aspx
Voulez-vous dire simplement d'avoir un utilisateur non authentifié, ou de rediriger l'utilisateur vers certains "Hé, vous avez expiré!" page après qu'ils ont attendu trop longtemps et que leur session a expiré? – Pandincus
Les deux si possible? – zSynopsis
lorsque la session se termine, la requête suivante qu'ils font sera non authentifiée. Dans ce cas, votre page peut vérifier cela lors du chargement d'une nouvelle page. Pour les rediriger s'ils ont été trop longtemps sur la même page, vous devez écrire javascript sur la page qui dispose d'un compte à rebours égal à la valeur du délai d'expiration de la session. Lorsque la minuterie atteint zéro redirection, car la session est invalide. (Kinda - une mise en garde est que si ils naviguent sur votre site dans un autre onglet - qui gardera la session en vie, tandis que le premier onglet javascript sera toujours à rebours) – Prescott