2010-08-05 6 views
4

Nous avons implémenté un système similaire à celui décrit dans cette section other SO post. Fondamentalement, si l'utilisateur ne fait rien pendant 14 minutes, nous les invitons à les déconnecter. Si elles cliquent sur "me garder connecté" nous faisons une requête d'ajax pour maintenir leur session vivante, sinon, elles sont redirigées vers la page de déconnexion après une minute.Déconnexion automatique avec plusieurs onglets ouverts

Cela fonctionne assez bien, et est en ligne avec des systèmes similaires utilisés sur des sites comme mint.com et bankofamerica.com. Le seul problème est que les utilisateurs de notre application ont tendance à avoir plusieurs onglets ouverts pour se référer à différentes données. Le problème est donc qu'ils peuvent travailler activement dans un onglet, mais l'autre onglet expire et les déconnecte. Cela provoque un délai d'expiration brut de session pour l'utilisateur quand ils ne l'attendaient pas. btw, mint.com a ce même problème.

Alors je me demandais si quelqu'un avait des idées pour combattre cela?

J'ai une idée, chaque requête pourrait définir un "dernier temps actif" cookie. Lors de la déconnexion automatique, le serveur peut vérifier cette dernière heure active et, si elle est relativement récente, évitez de la déconnecter. La déconnexion manuelle ignorera bien sûr ce cookie, donc si l'utilisateur veut se déconnecter, il peut le faire à tout moment. Cependant, j'ai peur que cela expose un risque de sécurité que je ne suis pas en mesure de voir à ce stade. Pensées?

+0

Je sais que cela a été publié il y a longtemps, mais je suis tombé dessus et j'ai eu l'idée: si un utilisateur a plusieurs instances ouvertes, et que les 14 minutes sont terminées, le pop-up montrera dans tous les cas . Vous pouvez à ce moment vérifier toutes les x secondes (pour cette minute jusqu'à ce que l'utilisateur va être déconnecté), si elles ont déjà cliqué sur "Restez connecté" (également le meilleur via ajax). Le problème que je vois si vous vérifiez juste la dernière fois active, est qu'une fois que ces expositions surgissent et l'utilisateur le rejette dans un onglet, elles seront encore déconnectées après une minute en raison de la se déconnecter d'un autre onglet. – Chris

+0

Ajoutez juste une étape de plus, @Chris: vérifiez le serveur pour voir s'il a été recopié avant de vous déconnecter. Déconnectez-les s'ils ne l'ont pas fait. – vbullinger

Répondre

2

Avant d'afficher la fenêtre contextuelle, demandez au serveur depuis combien de temps l'utilisateur a effectué sa dernière demande.

+0

Nous ne stockons pas actuellement la dernière heure de demande ... bien que, peut-être si nous inversons le problème. Si nous configurons ce cookie pour chaque requête, puis comme vous le suggérez, vérifiez-le avant d'afficher la boîte de dialogue du délai d'expiration. De cette façon, nous n'ajoutons aucun code au serveur en tant que tel. Intéressant, pensez-vous que cela pourrait fonctionner et être sécurisé? –

+1

Si un attaquant peut lire les cookies, il a déjà accès au cookie d'authentification et il est dans le système. Donc ce cookie ne le rend pas moins sécurisé. – Sjoerd

Questions connexes