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

Spring Web Java Discussion :

Rediriger l'utilisateur sur un timeout de session


Sujet :

Spring Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Par défaut Rediriger l'utilisateur sur un timeout de session
    salut a tous,

    J'ai une application Web dans laquelle j'utilise Spring et je voudrais, lorsque la session de l'utilisateur expire, le rediriger vers la page de login.

    j'ai ceci dans mon fichier de config :

    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
     
            <bean id="filterSecurityInterceptor"   class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
                <property name="authenticationManager">
                    <ref bean="authenticationManager" />
                </property>
                <property name="accessDecisionManager">
                    <ref bean="accessDecisionManager" />
                </property>
                <property name="objectDefinitionSource">
                    <value>
                        CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                        PATTERN_TYPE_APACHE_ANT
                        /admin/admin*=ADMIN,SUPERUSER
                        /main/*=USERS
                    </value>
                </property>
            </bean>
    Puis-je rajouter quelque chose ici pour dire "si l'utilisateur n'a aucun rôle (session invalide) alors rediriger vers /login.jsp" ?

    ou alors y'a il un moyen plus standard de faire ce que je cherche a faire avec Spring ?

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut sans utiliser spring
    En fait, je pense que tu dois pouvoir t'en tirer sans utiliser spring. Dans ton fichier web.xml, tu ajoute ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <listener>
    	<listener-class>org.projet.controleur.EcouteurSession</listener-class>
    </listener>
    et dans le package org.projet.controleur tu créé la classe suivante EcouteurSession.java
    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
     
    package org.projet.controleur;
     
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
     
    public class EcouteurSession implements HttpSessionListener{
     
    	public void sessionCreated(HttpSessionEvent arg0) {
    		long debut = System.currentTimeMillis();
    		System.out.println("session créée à "+debut+" pour la session "+arg0.getSession().getId());
     
    	}
     
    	public void sessionDestroyed(HttpSessionEvent arg0) {
    		System.out.println("session détruite : "+arg0.getSession().getId()+")");		
    	}
     
    }
    Il va de soi que tu peux mettre ce que tu veux dans le corps de cette méthode, notamment gérer une redirection
    J'espère que cela te servira si tu n'as pas encore solutionné ton problème. Sinon, aux suivants !
    Edit : En fait oublie ce message, il ne permet pas de réaliser ce que tu souhaites

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Par défaut Le filtre doit mieux convenir
    Bonjour,
    Même si la question a été posée il y a un bout de temps, je me permets d'y ajouter une remarque.
    Je pense plutôt que la solution serait d'utiliser les filtres (interface Filter).
    Les filtres permettent d'exécuter un traitement avant et/ou après qu'une requête soit traitée. Dans ton cas, il suffit d'intercepter chaque requête de ton application par un filtre, qui se chargera de tester si la session utilisateur existe toujours. Si ce n'est pas le cas, il suffit de rediriger vers la page d'accueil. Si la session existe toujours, alors il suffit de passer la main à la servlet qui exécutera ton code métier. Tu devrais trouver plusieurs exemples sur le net pour illustrer mon propos.
    Les écouteurs de session ne peuvent pas être utilisés dans ton cas car tu n'as pas la main sur la requête ou la réponse.
    Bon courage à tous.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    Exact. En ce qui me concerne je fais bien de la façon que j'ai donné parce que j'utilise un framework qui me permet de provoquer la redirection en reverse ajax. Du coup, au niveau comportement, c'est un peu alambiqué : le serveur ordonne au client de lui demander une redirection plutot que de la faire lui-même...
    Enfin du coup j'affichais en popup un message du genre "vous avez été déconnecté". Mais la solution proposée par hainaoui est plus simple et s'adaptera mieux à la plupart des projets, puisqu'elle ne nécessite pas de framework particulier.
    Le seul bémol à ta méthode est que tu ne peux faire ton traitement que lorsque tu reçois une requête du client. En d'autres termes ce que je propose, c'est le serveur qui vient taper à la porte du client lui dire "ta session est terminée" alors que toi c'est le client qui lorsqu'il a quelque chose à demander au serveur va le voir et risque de se prendre une veste "non, désolé, ta session est perdue depuis deux heures, va te reconnecter"
    Au niveau convivialité, je préfère ma solution, même si elle est plus complexe à mettre en oeuvre.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 108
    Par défaut
    Ou tout simplement utiliser Spring Security qui permet de gérer les sessions d'une manière plus fine mais surtout transparente. Par contre, ça parait assez difficile de mettre en place une redirection automatique au timeout de session. A moins d'utiliser Javascript, ce que je voudrais éviter.

Discussions similaires

  1. Plusieurs utilisateurs sur la meme session
    Par jeromeSERRE dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/12/2008, 15h01
  2. Rediriger vers une page de login quand timeout de session
    Par Tail dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 18/09/2008, 12h43
  3. rediriger l'utilisateur sur une autre page
    Par systemofaxav dans le forum Langage
    Réponses: 7
    Dernier message: 27/03/2007, 16h15
  4. [Sécurité] 2 utilisateurs sur une même session
    Par Sandara dans le forum Langage
    Réponses: 3
    Dernier message: 19/03/2007, 09h29
  5. POPUP: Rediriger l'utilisateur sur une autre page
    Par anutka dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/09/2005, 11h36

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