8
votes

Avertissez l'utilisateur sur le délai d'attente de session en Java EE

Mon exigence est d'informer l'utilisateur avec une pop up affirmant que la session d'utilisateur est sur le point de s'éteindre en x secondes au cas où l'utilisateur n'effectue aucune activité sur la page Web.

L'ajout à cette exigence est de décrémenter la valeur x secondes de manière dynamique dans la fenêtre contextuelle.

L'environnement que j'utilise est Java Ee.


0 commentaires

3 Réponses :


1
votes

Je ne pense pas que Java / Java EE sera vraiment utile ici car il est nécessaire d'être traité sur le côté client (c'est-à-dire à l'aide de JavaScript). Une solution à laquelle je peux penser serait de définir une sorte de minuterie qui informerait l'utilisateur quelques minutes avant l'heure du serveur.

Tout en googling à ce sujet, j'ai trouvé eric Pascarello's Mettre à jour la session de l'utilisateur avec AJAX Blog Post (et la version rechargée Mise à jour de la session d'utilisateur avec AJAX - Tour 2 ) qui décrit précisément une telle solution (et utilisez un xmlhttprecest pour mettre à jour la session). Son script de gestion de session Ajax est disponible ici .


1 commentaires

Le lien vers le script va bien et les deux autres peuvent être trouvés dans l'archive Web: web.archive.org/web/20081203190028/http://radio.javaranch.co m / ...



12
votes

Utiliser httpsession # getmaxinActiveInterval () code> et Settimeout ( ) code> . Il n'y a pas besoin d'Ajax dans ce but particulier, à moins que vous ne souhaitiez reporter le délai d'attente sur chaque activité client (sondage).

Exemple de base: P>

<script>
    var secondsBeforeExpire = ${pageContext.session.maxInactiveInterval};
    var timeToDecide = 15; // Give client 15 seconds to choose.
    setTimeout(function() {
        alert('Your session is about to timeout in ' + timeToDecide + ' seconds!')
    }, (secondsBeforeExpire - timeToDecide) * 1000);
</script>


2 commentaires

Vous avez raison, il n'y a pas de besoin strict pour Ajax, mais la bonne chose à propos de l'utilisation d'un XMLHTTPQUEST Pour mettre à jour la session est que l'utilisateur n'aura besoin de naviguer pour éviter le délai d'attente. Cela peut être pratique lorsque vous remplissez un formulaire par exemple.


"Si vous voulez vraiment avoir tous les JS dans un fichier distinct * .js, alors vous devez laisser le jspsservlet gérer toutes les demandes * .js aussi" - pouvez-vous expliquer cela, je ne connais pas avec JS, et Je dois mettre cette fonction dans un fichier * .js séparé, car j'ai beaucoup de pages JSP? Que dois-je faire pour que cela fonctionne comme ça? @Balusque



0
votes

Soit, c'est peut-être un servlet simple, Spring-MVC ou Spring-Security Security Security n'est pas possible sans la logique côté client parfaite.
Considérant que l'application aura à la fois le type de demande

  • AJAX et
    LI>
  • Soumission de formulaire / rechargement de page LI> ul>

    Déconnexion automatique a besoin de la logique très calculée. Présenter ma mise en œuvre de la fonctionnalité Autologut avec P>

    Avantages. H2>

    P>


    1. Aucun appel / demande supplémentaire n'est utilisé pour y parvenir. Considérant l'impact des performances Si plus de 10 000 utilisateurs actifs et des appels supplémentaires pour obtenir la déconnexion automatique.
    2. Configuration d'une ligne à l'aide de la balise.
    3. Fonctionne parfaitement même si l'utilisateur ouvre plusieurs onglet ou plusieurs fenêtres.
    4. Il vous intime avant 30 secondes d'invalidation de la session. Si vous avez rempli le formulaire et non soumis, vous pouvez conserver la session en vie (prolongation d'une session en un clic). Donc, l'utilisateur moins susceptible de perdre des données non enregistrées. P>

    Utilisation H2>

    1. Inclure le script de déconnexion automatique dans les pages JSP requises comme indiqué ci-dessous. Strong> p> xxx pré>

    2. Créez une page JSP, Autologut-Script.jsp et ajouter le code ci-dessous. Strong> Remarque: aucune modification / configuration n'est requise p> xxx pré>

    3. Configurer les attributs de session pour configurer le réglage du délai d'expiration strong> Remarque: configurez ceci après la création de session. Vous pouvez implémenter la méthode de SessionCreatTener HTTPSPessionListener et définir la configuration suivante selon votre exigence. P>

    <meta http-equiv="refresh" content="60; url=login.jsp">
    


0 commentaires