Comment puis-je vérifier qu'une fenêtre est utilisée activement et, dans le cas contraire, avertir l'utilisateur final qu'ils sont sur le point de se déconnecter?

StackOverflow https://stackoverflow.com/questions/105147

  •  01-07-2019
  •  | 
  •  

Question

Travaillant sur un nouveau système dorsal pour mon entreprise, l'une de leurs demandes consiste à verrouiller une fenêtre et à envoyer l'utilisateur à l'écran de connexion s'il le laisse inactif pendant trop longtemps.

Je pense que je le ferais avec JavaScript en associant les auditeurs aux clics, aux déplacements de souris et aux touches de raccourci, mais je crains de jouer avec d'autres scripts.

Des suggestions? & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & # 173; & 173. & # 173; & # 173;

Était-ce utile?

La solution

Premièrement, pour que cela soit efficace, vous devez vous assurer que les utilisateurs sont déconnectés du serveur à la fin de cette période d'inactivité. Sinon, rien de ce que vous faites du côté client n'est efficace. Si vous les envoyez sur une page de connexion, ils peuvent simplement cliquer sur le bouton Précédent.

Deuxièmement, la méthode classique consiste à utiliser un "meta refresh". étiquette. Ajouter ceci à la page:

<meta http-equiv="refresh" content="900;url=http://example.com/login"/>

les enverra à la page de connexion après 15 minutes (900 secondes). Cela les y enverra même s’ils font quelque chose sur la page. Il ne détecte aucune activité. Il sait juste depuis combien de temps la page est affichée dans le navigateur. C’est généralement suffisant car les gens ne prennent pas 15 minutes pour remplir une page (stackoverflow.com est une exception notable, je suppose.)

Si vous devez vraiment détecter une activité sur la page, je pense que votre premier instinct est correct. Vous allez devoir ajouter des gestionnaires d'événements à plusieurs choses. Si vous craignez de jouer avec d'autres scripts pour la validation ou d'autres choses, vous devriez envisager d'ajouter des gestionnaires d'événements par programme plutôt qu'en ligne. C'est-à-dire, au lieu d'utiliser

<input type="text" onClick="doSomething;">

Accédez directement au modèle d'objet avec

Mozilla way:   element.addEventListener('click' ...)
Microsoft way: element.attachEvent('onclick' ...) 

puis assurez-vous de transmettre les événements après les avoir reçus afin que le code existant continue de faire tout ce qu'il est censé faire (validation?).

http://www.quirksmode.org/js/introevents.html a une bonne écriture sur la façon de le faire.

-
bmb

Autres conseils

Vous pouvez simplement lui demander de vous déconnecter si l'utilisateur ne change pas de page après si longtemps. C’est ce que semble faire le système Angel Learning Courseware.

L’autre problème que vous allez rencontrer, cependant, est que certains utilisateurs désactivent JavaScript.

Si vous pouvez mettre du code sur la page, il y a deux choses:

  • Javascript recherche les mouvements de la souris, l'activité du clavier et le défilement.
  • Placez une balise meta refresh dans le code HTML. Si cette page est affichée depuis plus de X minutes, elle sera automatiquement redirigée vers la page de connexion.

Si vous ne pouvez mettre que du code sur le serveur:

  • Conservez une session (cookie ou autre) qui indique le temps écoulé entre les changements de page. Si une page est demandée plus de X minutes depuis la dernière demande, ne publiez pas la page demandée, transmettez la page de connexion.

Vous pouvez utiliser simultanément les techniques de méta-rafraîchissement et de serveur. La page rafraîchie affichera un message "Votre session est sur le point d'expirer. Cliquez ici pour revenir en arrière et continuer à travailler dans les 30 secondes".

Le bouton sur lequel ils cliquent réinitialise la session de votre serveur et exécute une fonction de retour à la page afin que les données dont ils disposaient (dans la plupart des navigateurs) soient toujours présents. Nécessite JavaScript sur la page d'actualisation, mais pas sur la page d'origine - juste une actualisation méta. Le suivi de l'activité en Javascript serait le meilleur choix.

-Adam

Dans l'événement de chargement de la page, vous pouvez utiliser setTimeout pour lancer une fonction avertissant l'utilisateur qu'il sera déconnecté s'il n'actualise pas la page.

Avec des délais d'attente de session de 5 minutes, vous pouvez émettre des avertissements après 4 minutes:

setTimeout(timeoutWarning, 240000);

function timeoutWarning() {
  if(confirm('You have been idle for a while.  Would you like to remain logged in?'))
    window.location.refresh();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top