Question

Je conserve une variable de session lorsque l'utilisateur est connecté. De sorte que lorsque l'utilisateur clique sur btnLogout, il doit effacer toutes mes sessions et déconnecter l'utilisateur pour GOOD !!!

Cela efface mes sessions, mais si je clique sur le bouton RETOUR dans IE juste après ma déconnexion, je suis toujours connecté! Cela signifie qu’il revient à l’écran où l’utilisateur était toujours connecté.

Mon code lors de la déconnexion

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

Pourquoi est-ce et comment puis-je empêcher cela?

MODIFIER: Existe-t-il une option dans le code que je peux utiliser pour empêcher l’utilisateur d’appuyer sur le bouton RETOUR de Web Browzer?

Était-ce utile?

La solution

Vous pouvez mettre ceci dans la Page_Init de votre maître:

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

C’est, par exemple, ce que la plupart des sites Web des banques font afin que vous ne puissiez pas utiliser efficacement le bouton de retour.

Autres conseils

Mais est-ce vraiment un problème? Oui, ils pouvaient voir leur page précédente telle qu’elle avait été mise en cache, mais dès qu’ils tenteront de faire toute autre demande légitime dans ce contexte, celle-ci échouera au fur et à mesure que vos variables de session disparaîtront.

Si vous n'avez pas de raison très précise de coder cela, vous résoudrez un problème inexistant.

Vous pouvez indiquer au navigateur de ne pas mettre en cache la page, que ce soit avec code-behind, javascript ou HTML, en procédant comme suit sur la page

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

Il aurait également été judicieux d’ajouter du code dans votre événement page_load dans le code-behind afin de s’assurer que la variable de session existe toujours.

Le navigateur conserve un cache de la page. Par conséquent, il ne suffit pas de revenir en arrière pour demander au serveur si vous êtes toujours connecté. Vous devez utiliser HTTPS pour vous assurer que le cache est également protégé.

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