IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

[Filtre Servlet] Deconnexion automatique


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Par défaut [Filtre Servlet] Deconnexion automatique
    Bonjour,

    Sut une appli gwt je voudrais pouvoir deconnecter automatiquement les utilisateurs dont le sessionhttp a expirée.

    Pour ça j'ai mis dans la session une variable "user" qui contiens l'utilisateur connecté et si cette variable est null je voudrais rediriger l'utilisateur vers une servlet "deconnect" qui se charge de fermer toutes les connexions.

    Pour réalisé ça, je mets un filtre sur mon remote servlet et donc à chaque appel il y a le test sur l'utilisateur qui se fait puis un sendRedirect le cas échéant.

    Le Code qui gère ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
    		HttpServletRequest request = (HttpServletRequest) arg0;
    		HttpServletResponse response = (HttpServletResponse) arg1;
    		HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(response);
    		System.out.println("DeconnectFilter.doFilter()");
    		if(request.getSession().getAttribute("user") == null) {
    			System.out.println("DeconnectFilter.doFilter() REDIRECTION !!!!!");
    			wrapper.sendRedirect("deconnect?forcedeconnect=1");
    		} 
    		arg2.doFilter(arg0, wrapper);
    	}

    Je vois bien le message "REDIRECTION" mais après plus rien et l'utilisateur n'est pas redirigé mais je n'ai aucune exception, rien...

    Comment je peux rediriger mon utilisateur?
    Merci d'avance...

    P.S. j'utilise un 'HttpServletResponseWrapper' car je l'ai vu sur des forums mais j'ai aussi essayer avec le HttpResponse mais c'est exactement la même chose...

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Par défaut
    je continue mes investigations, mais sans résultats...

    J'ai modifié le code de mon filtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    	public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
    		HttpServletRequest request = (HttpServletRequest) arg0;
    		HttpServletResponse response = (HttpServletResponse) arg1;
    		HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(response);
     
     
     
    		System.out.println("DeconnectFilter.doFilter()");
    		if(request.getSession().getAttribute("user") == null) {
    			System.out.println("DeconnectFilter.doFilter() REDIRECTION !!!!!");
    			try{
    //				response.sendRedirect("index.jsp?forcedeconnect=1");
    				request.getRequestDispatcher("index.jsp?forcedeconnect=1").forward(arg0, arg1);
    			}catch (Exception e) {
    				e.printStackTrace();
    			}
    		} else {
     
    		}
    		arg2.doFilter(arg0, wrapper);
    	}
    et dans le web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<filter-mapping>
    		<filter-name>deconnectFilter</filter-name>
    		<url-pattern>/tools</url-pattern>
     
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>INCLUDE</dispatcher>
    		<dispatcher>ERROR</dispatcher>
    	</filter-mapping>
    et malheureusement rien ne change...
    C'est à dire que les traces dans ma console sont bonnes et cohérentes mais que la redirection que doit voir l'utilisateur ne se fait pas...

    Si je trouve quelquechose, je le posterais ici, mais si quelqu'un a déjà eu ce genre de soucis, je suis preneur !

    (là j'en suis à me demander si ecrire le code javascript dans la réponse ne serait pas plus rentable...)

  3. #3
    Membre éclairé

    Inscrit en
    Août 2002
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Août 2002
    Messages : 302
    Par défaut
    Bonjour,
    Personnellement j'ai opté pour une méthode bcp plus simple. Dans chaque méthode serveur je vérifie l'état de la variable de session "user", si cette variable est vide je renvoie une exception de type particulier qui sera récupérée coté client dans la méthode onfailure de l'appel asynchrone et là je fais une redirection coté client. Je sais pas si c'est une bonne manière de faire mais ça a bien répondu à mon besoin.

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Par défaut
    Citation Envoyé par nannous Voir le message
    Bonjour,
    Personnellement j'ai opté pour une méthode bcp plus simple. Dans chaque méthode serveur je vérifie l'état de la variable de session "user", si cette variable est vide je renvoie une exception de type particulier qui sera récupérée coté client dans la méthode onfailure de l'appel asynchrone et là je fais une redirection coté client. Je sais pas si c'est une bonne manière de faire mais ça a bien répondu à mon besoin.
    J'y ai bien entendu pensé, mais je suis un peu fainéant et j'ai pas très envie de me retaper tous les appels serveurs
    C'est d'autant plus vrai que j'ai à côté d'autres applications à qui je pourrais implémenter ça....

    Sans compter que je ne comprends pas pourquoi cela ne marche pas et j'aimerais bien comprendre aussi...

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Ce qui n'est pas clair dans ton message, c'est si tu utilises le RPC de GWT ?

    Et si c'est le cas, ton filtre est en amont ?

    De plus, le moyen le plus propre de réagir à une expiration de la session, c'est d'utiliser un HttpSessionListener.

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Par défaut
    Citation Envoyé par benwit Voir le message
    Ce qui n'est pas clair dans ton message, c'est si tu utilises le RPC de GWT ?

    Et si c'est le cas, ton filtre est en amont ?

    De plus, le moyen le plus propre de réagir à une expiration de la session, c'est d'utiliser un HttpSessionListener.
    Oui j'utilise le RPC de gwt, la servlet qui est filtrée est bien celle qui hérite de RemoteServlet.
    Après j'utilise déjà un SessionListener qui lui s'occupe de fermer les connexions ouvertes (notamment avec la BD).
    Moi ce que je cherche à faire avec le filtre c'est simplement pouvoir rediriger l'utilisaateur vers une autre page afin qu'il se re-connecte.

    Merci de vos réponses...

Discussions similaires

  1. Démarrage Filtre / Servlets
    Par denisC dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 31/10/2007, 17h17
  2. Deconnexion automatique ?
    Par Tigrounette dans le forum JDBC
    Réponses: 4
    Dernier message: 07/09/2007, 10h34
  3. Réponses: 6
    Dernier message: 12/07/2006, 13h54
  4. [Sécurité] timout et déconnexion automatique
    Par gege19 dans le forum Langage
    Réponses: 1
    Dernier message: 03/07/2006, 14h24
  5. [Servlet]Envoi automatique de mails d'alerte
    Par spk4ever dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 11/05/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo