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

Struts 1 Java Discussion :

[ Session ][ debutant ]


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut [ Session ][ debutant ]
    Bonjour,

    je suis en train de développer une application en struts, et pour que celle-ci soit vérouillée correctement, je suis en train de mettre en place la gestion des exceptions. Mais j'ai un probleme !!!!
    Comment faire pour savoir si une session a "sauté" ou savoir si le time out est fini? Comme ca si l'utilisateur reste inactif et reprend au bout d'un moment, je voudrais le renvoyer sur une phase de login....

    Renvoyer sur le login ca c'est ok, mais par contre j'arrive pas à tester correctement la session......

    Merci beaucoup d'avance.....

  2. #2
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Bonjour,

    Problème déjà posé plusieurs fois :

    http://www.developpez.net/forums/sho...on+null+filter

    Voici une réponse plutot complète.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    HttpSession session == request.getSession(false);
    if( session == null ) {
       // la session n'existe pas -> login
    } else {
       ...
    }
    Dans ton action de login, tu dois évidement forcer la création de la session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpSession session == request.getSession(true);
    En règle général, on utilise un ServletFilter pour mettre en place cette mécanique

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    J'utilisais ta technique Alwin, mais apparement cela ne fonctionne pas bien car a chaque fois je ne rentre pas dans le if( session == null ).....
    Je vais lire le lien de Yolepro et voir ce que je peux en faire

    merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    Désolé yolepro, mais je comprends pas tout ce qui se passe avec la solution que tu proposes.....
    Par exemple d'ou sort le FilterChain?
    De plus tu dis que le filter est appelé automatiquement, mais il ne faut pas l'initialiser par exemple?

    Merci de m'apporter un peu d'éclairage sur certain therme et sur la manière d'utilser ton post....

  6. #6
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    sebus,

    Si tu veux plus de précision, il faut se pencher sur le design pattern Filter (tu peux trouver un descriptif detaillé ici http://java.sun.com/blueprints/corej...ngFilter.html).

    Dans tous les cas il faut te dire que le fait de faire ca dans ton web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <filter>
    		<filter-name>SessionFilter</filter-name>
    		<display-name>SessionFilter</display-name>
    		<filter-class>com.developpez.filter.SessionFilter</filter-class>
    		<init-param>
    			<param-name>session_page</param-name>
    			<param-value>/noSession.jsp</param-value>
    		</init-param>
    	</filter>
                 <filter-mapping>
    		<filter-name>FilterEncoding</filter-name>
    		<servlet-name>action</servlet-name>
    	</filter-mapping>
    En considérant que la servlet "action" est correspond org.apache.struts.action.ActionServlet

    Effectivement il passera par la méthode doFilter avant tout appel à une action.

    Désolé, je ne peux pas etre plus précis.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Par défaut
    En fait c'est ce bout de code qui me pose pblm:

    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
          if (request instanceof HttpServletRequest) {
             HttpSession session = ((HttpServletRequest) request).getSession(false);
             // -- récup le user dans la session
    	 // retourne authorized = true; si présent
          }
     
          if (authorized) {
             chain.doFilter(request, response);
             return;
          } else if (filterConfig != null) {
             String host = request.getServerName();
             String session_page = filterConfig.getInitParameter("session_page");
     
             if (session_page != null && !"".equals(session_page)) {
                filterConfig.getServletContext().getRequestDispatcher(session_page).forward(request, response);
                return;
             }
          }
    En fait une fois que j'ai fait :
    HttpSession session = ((HttpServletRequest)request).getSession(false);
    Je fais comment pour savoir si la session a expiré? Elle doit etre a null si expiré?

    Ensuite si j'ai bien compris:
    Je mets authorized a true si la session a expiré, puis je renvois vers ma page d'erreur
    sinon hé bien la je suis largué.....

    Si quelqu'un peut m'apporter des explications sur ce bout de code......

Discussions similaires

  1. [Debutant(e)]Timeout de session et redirection page acceuil
    Par xhercule dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 26/12/2007, 11h23
  2. [debutant]Liberation enreg en fin de session
    Par tonyiommi dans le forum Oracle
    Réponses: 4
    Dernier message: 30/11/2006, 17h27
  3. [DEBUTANT]Javascript et stockage en session
    Par jeannot1974 dans le forum ASP
    Réponses: 3
    Dernier message: 24/11/2006, 11h32
  4. [Struts][Debutant] liste de résultat en session
    Par hugo123 dans le forum Struts 1
    Réponses: 5
    Dernier message: 19/08/2005, 10h42
  5. [debutant][jsp]Passage d'entier avec une session sans cookie
    Par o151181 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/02/2004, 18h22

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