Question

Je travaille sur une application GWT-poste. Dans cette application, je parvins session côté client. Pour cela, je écrire ci-dessous le code:

Pour gérer la session: importation com.google.gwt.user.client.Timer;

public class ClientTimers {

    private static final Timer SESSION_MAY_HAVE_EXPIRED_TIMER = new Timer() {

        @Override
        public void run() {
            // Warn the user, that the session may have expired.
            // You could then show a login dialog, etc...
        }
    };

    public static void renewSessionTimer() {

        // First cancel the previous timer
        SESSION_MAY_HAVE_EXPIRED_TIMER.cancel();

        // Schedule again in 5 minutes (maybe make that configurable?)
        // Actually, let's subtract 10 seconds from that, because our timer
        // won't be synchronized perfectly with the server's timer.
        SESSION_MAY_HAVE_EXPIRED_TIMER.schedule(5 * 60 * 1000 - 10000);
    }
}

Pour obtenir l'activité de l'utilisateur:

    Ext.get("pagePanel").addListener("click", new EventCallback() {
        @Override
        public void execute(EventObject e) {
            //MessageBox.alert("On Mouse Click");
    });

    Ext.get("pagePanel").addListener("keydown", new EventCallback() {

        @Override
        public void execute(EventObject e) { //
            //MessageBox.alert("On Key Press Click");
        }
    });

Ce code fonctionne bien, mais mes questions: Ce code ne déconnecte automatiquement que le temps occurs.For mon code, je veux que le clic ou la touche vers le bas, il devrait faire fermeture de session. Cas est comme ceci: Si l'utilisateur est connecté et le temps de se déconnecter est de 5 min.User ne faire aucune activité sur l'écran que maintenant selon le code ci-dessus, il se connectera automatiquement comme complète 5 min

Maintenant, mon exigence est que si l'utilisateur connecté et il ne fait pas quelque chose pour 5 mins.It ne devrait pas faire une DÉCONNECTÉ automatically.Instead de vous déconnecter à la fin de 5 min, Si l'utilisateur ne clique ou bas sur 6 min, alors il devrait faire le journal des processus.

Fondamentalement, le journal des processus comme la minuterie dépasser le temps spécifié doit être fait sur l'activité de l'utilisateur, pas automatiquement.

Était-ce utile?

La solution

Dans la minuterie, incrémente une variable pour chaque seconde. Et lorsque l'utilisateur cliquez sur un bouton après 5 minutes ou 6 minutes de vérifier la variable compteur et si la variable est supérieure à 6 que vous pouvez utiliser window.location.reload (); pour reload ou fermeture de session ().

Autres conseils

Je pense que la chose que vous Searchin pour est:

window.location.reload ();

Le feu tous les quelques secons avec une minuterie, de sorte que l'utilisateur toujours apper d'être actif.

(BTW je que de fenêtre des problèmes de proximité dans GWT -ext )

Installer un gestionnaire d'événements JavaScript sur un div invisible qui couvre la zone. Si elle devient un événement, envoyer une demande d'AJAX au serveur.

Le serveur peut alors faire ce qu'il doit faire. Du côté client, vous pouvez attendre une réponse de la requête AJAX et l'affichage « Vous avez été déconnecté ».

Il y a un inconvénient de cette approche: les objets stockés dans la session seront maintenues en vie pendant trop longtemps. Donc, même si l'utilisateur ne se déconnecte et marche quelques pas (ou son navigateur se bloque), la session restera en vie.

Après quelques jours, tant de séances mortes accumulera que votre serveur se bloque.

Ainsi, la meilleure solution est de déconnexion automatique à l'utilisateur comme vous le faites déjà et installer un gestionnaire d'événements AJAX comme décrit ci-dessus pour afficher un message lorsque l'utilisateur retourne au navigateur.

De cette façon, votre serveur peut nettoyer des sessions mortes et l'utilisateur reçoit un message quand il peut le lire (quand il est en face de l'écran).

Notez que vous ne pouvez pas faire la différence entre l'utilisateur et l'équipe de nettoyage frapper la souris.

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