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 :

POST/REDIRECT/GET avec STRUTS


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Etudiant
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut POST/REDIRECT/GET avec STRUTS
    Bonjour la communauté! J'utilise Struts 1.3.8 avec Netbeans et FireFox 3.6.9, mais je fais face à un véritable problème.
    A l'origine mon problème est de pouvoir sortir (me déconnecter) de mon application en toute sécurité, i.e. faire un logout sécurisé, mais seulement lorsque je me déconnecte de l'application malgré le que je fasse :
    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
     
    public class LogoutAction extends Action{
     
        @Override
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception
        {
            HttpSession session = request.getSession();
            if(session != null){
                session.removeAttribute("user");
                session.invalidate();
            }        
            return mapping.findForward("logout");
        }
    }
    Dès que je fais un "back" dans mon navigateur, je suis ramené à la page précédente et tout se passe comme si l'utilisateur était toujours connecté.
    Pour résoudre mon problème j'ai suivi le tutoriel suivant http://www.javaworld.com/javaworld/j...27-logout.html. J'ai donc ma page logout.jsp qui ressemble à ceci:
    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
     
    <%@page contentType="text/html"%>
     
        <%
            response.setHeader("Cache-Control","no-cache"); //Forces caches to obtain a new copy of the page from the origin server
            response.setHeader("Cache-Control","no-store"); //Directs caches not to store the page under any circumstance
            response.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale"
            response.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibility
     
                    User user = (User) session.getAttribute("user");
                    if (null == user) {
                       request.setAttribute("Error", "Session has ended.  Please login.");
                       RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
                       rd.forward(request, response);
                    }
                    //ContextHolder.setContext(null);
     
        %>
     
        <jsp:forward page="login1.do"/>
    De même dans mon fichier struts-config.xml j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <controller nocache="true" processorClass="com.foo.struts.processor.IRequestProcessor"/>
    Où ma classe IRequestProcessor est la suivante:
    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
     
    public class IRequestProcessor extends TilesRequestProcessor {
     
        // On verifie si l'utilsateur est bien connecté
        protected boolean isUserConnected(HttpServletRequest request, HttpServletResponse response) {
            if (request != null) {
                HttpSession session = request.getSession(false);
     
                if (session != null && session.getAttribute("user") != null) {
                    return true;
                } else {                
                    return request.isRequestedSessionIdValid();
                }
     
            }
            return false;
        }
     
        // On vérifie si la session a expirée : la session expire si l'id de la session n'est pas valide
        @Override
        protected boolean processRoles(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping)
                throws java.io.IOException, javax.servlet.ServletException {
     
            if (isUserConnected(request, response)) {
                return true;
            } else {
                try {
                    //If no redirect user to login Page
                    request.getRequestDispatcher("login.jsp").forward(request, response);
                } catch (Exception ex) {
    //	            	log.error(ex);
                    request.getRequestDispatcher("../login.jsp").forward(request, response);
                }
            }
            return false;
        }
    }
    Mais seulement ici un nouveau problème se pose: lorsque je clic sur le bouton "back" du navigateur (en l'occurrence FireFox) il me demande si je veux renvoyer les informations ou non, lorsque je dis oui, bien évidemment il se reconnecte et je n'ai toujours pas de solution, et si je dis non il ne fait rien même pas le "back" (retour à la page précédente).

    Alors si quelqu'un à une idée de comment résoudre le problème de déconnexion d'une application java web avec Struts 1.x, je serais intéressé par sa solution.
    Merci d'avance!

  2. #2
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    bonjour,
    je sais simplement qu'en struts2;
    dans le fichier struts.xml je crois;
    il y a le prototype=session ou prototype=request qui est super important;

    a+

Discussions similaires

  1. Alimenter une requête POST ou GET avec paramètre
    Par yomismo dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 04/11/2013, 21h47
  2. C++ Builder 3 GET & POST via Proxy avec Identification
    Par izak52g dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 06/09/2007, 10h11
  3. GET et POST avec struts
    Par Mister Nono dans le forum Struts 1
    Réponses: 21
    Dernier message: 29/05/2007, 18h35
  4. Redirection php avec données POST et fsockopen
    Par Cylie34 dans le forum Langage
    Réponses: 1
    Dernier message: 26/02/2007, 17h10
  5. [HTTPS] Problème de Post et Get avec Apache et SSL
    Par bartrik dans le forum Apache
    Réponses: 5
    Dernier message: 17/09/2004, 08h37

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