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

Servlets/JSP Java Discussion :

[Servlets - JSP] Problème de session


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut [Servlets - JSP] Problème de session
    Je développe un Intranet avec des pages jsp utilisant des beans, et des servlets…
    Pour améliorer la sécurité, une authentification est requise au lancement de l’Intranet. Ceci entraine la création d’une variable de session.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    HttpSession session = req.getSession() ;
    Session.setAttribute(« user », new User(id, login, role)) ;
    Si quelqu’un essaye d’accéder directement à une page jsp de l’Intranet, sans être passé par l’authentification, il doit être redirigé vers une page « Accès interdit !! »

    Pour cela, j’effectue un test dans chaque page jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    if ( (User) request.getSession(false).getAttribute("user") != null){  
        // j’affiche le contenu statique de ma pages jsp
        // j’exécute les méthodes du bean qui font afficher le contenu dynamique de ma page
    }
    else
        res.sendRedirect(« forbidden.jsp ») ;	// sinon je renvoie la page d’interdiction
    Le problème c’est qu’après une déconnexion ( fermeture de la session par session.invalidate() ), si je tape l’adresse d’une jsp dans le navigateur, il y accède quand même…
    Par contre si je fais actualiser la page, il me met la page d’Interdiction…

  2. #2
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    c le cache du navigateur.

    Si tu veux etre sur que l'objet soit inccessible set la à null;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    Ca fait pareil si je fais session = null ...

  4. #4
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Points : 111
    Points
    111
    Par défaut
    pour eviter ça, il faut que la page ne soit pas chargé du cache, ecrit donc en plus dans ta page le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
    response.setHeader("Pragma","no-cache"); //HTTP 1.0
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
    ça devrait suffire...
    bon courage !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    Voici le code de ma JSP

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <HTML>
     
       <HEAD>
     
          <TITLE> Gestion des Mots de Passe </TITLE>
     
       </HEAD>
     
          <BODY bgcolor="#FFFFC0">
             <a href="../../Intranet.html" TARGET="_parent"><img src="../../images/return.gif" border="0"></a>
     
             <H2 align="center"> Annuaire </H2>
     
             <hr width="30%">
     
          <jsp:useBean id="annu" class="Annuaire" scope="application" />
     
          <%
              response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 
              response.setHeader("Pragma","no-cache"); //HTTP 1.0 
              response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
              
              if((caf.User)request.getSession(false).getAttribute("user")!=null){
                  
                  String etat = ((request.getParameter("action")==null)?"affich":request.getParameter("action"));
                  
                  String res = (String)Class.forName("caf.Annuaire").getMethod("Tr_"+etat, new Class[]{HttpServletRequest.class, HttpServletResponse.class}).invoke(annu, new Object[]{request, response});
            
                  out.println(res);
              
               }else
            response.sendRedirect("Forbidden.jsp");
          %>
     
       </BODY>
    <HTML>
    Mais ça fait pareil, ça ne marche que si je fais actualiser la page ...
    A moins qu'il ne faille mettre les 3 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
    dans le bean ???

  6. #6
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 366
    Points
    1 366
    Par défaut
    Et si tu essayais de rajouter plutot un test sur la session pour savoir si elle est "valide".


    Me rappelle plus torp mais un truc du genre

    session.isInvalidated() retoutant un boolean ca doit exister, ou l'equivalent.

  7. #7
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 109
    Points : 111
    Points
    111
    Par défaut
    je ne pense pas qu'il faille le mettre dans le bean mais bon...
    personnelement, j'ai mis ce code avec le code de verif de la session dans une fonction javascript onload()... comme ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function verif_session(){
    <%  response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
        response.setHeader("Pragma","no-cache"); //HTTP 1.0
        response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
        HttpSession sess =request.getSession();
        if(sess.getAttribute("connect")==null){
            %>
              location.replace("Erreur.jsp");
         <%}%>
    }
    </script>
    </head>
    <body onload="verif_session();">
    si après, ça ne marche toujours pas, verifie bien que ta session est invalidée, on sait jamais..

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 255
    Points : 53
    Points
    53
    Par défaut
    Non, c'est bon ça marche en fait !!!

    Merci

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Tunisie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 9
    Points
    9
    Par défaut erreur
    bonjour,

    j'utilise Eclipse Indigo comme IDE, l'application marche parfaitement sauf que au niveau de la session exactement dans les méthodes de response.setHeader() et response.setDataHeader() il y a un erreur s'affiche comme suit :

    The method setHeader(String, String) from the type HttpServletResponse refers to the missing type String

    De même pour setDataHeader(),

    Quelqu'un peut me siter le problème la dessus ?
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de session avec les JSP/Servlet
    Par FuneralRose dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 02/06/2012, 10h28
  2. servlet/JSP = Pb de session
    Par keopsk dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 24/04/2007, 10h18
  3. [JSP] Problème de session
    Par ederf dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 04/07/2006, 14h07
  4. [servlet] [jsp] problème de package
    Par Erreip dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/11/2005, 10h54
  5. [SERVLET][JSP]conserver sa session
    Par jse dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 26/08/2004, 13h53

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