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 :

[ Struts ] tiles et redirection de session


Sujet :

Struts 1 Java

  1. #1
    Futur Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [ Struts ] tiles et redirection de session
    bonjour,

    j'utilise Tiles dans une application struts.
    J'ai une page jsp qui se compose de plusieurs parties dont une 'header.jsp'
    la partie haute de la page) qui verifie qu'un objet de session se trouve bien en session et qui redirige sur la page d'authentification dans le cas contraire:
    <logic:notPresent name="user" scope="session">
    <logic:forward name="logout" />
    </logic:notPresent>
    avec le logout definie dans le struts-config :
    <global-forwards>
    <forward name="login" path='/gestion.jsp'/>
    <forward name="logout" path='/index.jsp'/>
    </global-forwards>

    Malheureusement, quand la session se termine ( ou si j'efface le cookie de session du navigateur), au lieu de rediriger, j'ai une erreur :
    [ServletException in:/pages/common/header.jsp] Exception forwarding for name logout: java.lang.IllegalStateException: Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée'
    puis la suite de la page s'affiche normalement ( la suite de la page jsp est construite normalement par tiles ...)

    Je pense comprendre que tiles ne peut rediriger tant que la page n'est pas entierement construite, d'ou l'erreur.
    Mais comment proceder autrement ?
    Merci pour vos idees.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    qu'appelle tu par la session se termine tu veux dire si on clique sur un lien ou un bouton logout?

    Si oui, pourquoi ne pas lancer une Action struts qui dans le execute() ferais d'abord un getSession().invalidate() puis un mapping...forward() vers ta page de sortie ou ta page de login.

    C'est une solution comme une autre, mais je suis pas sur d'avoir compris la structure actuelle de ton appli

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 239
    Points : 239
    Points
    239
    Par défaut
    Salut,

    il est toujours conseillé d'effectuer ses contrôles utilisateur côté Controlleur au lieu de la Vue. Un message qui traite d'un problème similaire au tien

    http://www.developpez.net/forums/sho...d.php?t=133094

  4. #4
    Futur Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    bonjour,

    J'ai lu le post precedent et mon application se conforme maintenant
    a cette facon de proceder ( plus dans le style MVC ) : une Action struts de base qui verifie la presence d'un objet en
    session. Toutes les autres actions struts en heritent : c'est donc bien le controlleur qui verifie l'authentification.

    J'ai cependant un doute. Chaque action possede un mapping qui fait un
    forward sur des jsp ( qui ne font donc que de l'affichage ).
    Mais si l'utilisateur connait l'URL de la JSP
    (ex :http://localhost:8080/BOGI/gestion.jsp), il pourra acceder a la page jsp sans etre authentifié : il ne pourra rien faire d'autre car toutes les actions
    demande une authentification, mais il pourra tout de meme avoir acces
    a une partie de cette application.
    J'espere m'etre fait comprendre.
    Merci pour vos reponses.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    c'est sur, je pense qu'il pourra y acceder, pour ca il y a soit la solution du bean placé en session, soit jguard qui via des tags jsp définit la zone affichable selon des droits, etc....

    tape jguard dans google et regarde les exemples sur le site, il y a même de la doc en francais

Discussions similaires

  1. Struts, tiles, redirection & barre d'adresse navigateur
    Par nouknouk dans le forum Struts 1
    Réponses: 0
    Dernier message: 01/04/2009, 10h44
  2. [Struts + Tiles] Redirect?
    Par blbird dans le forum Struts 1
    Réponses: 1
    Dernier message: 09/01/2007, 10h45
  3. [Struts]Accès aux Form en session depuis execute?
    Par odoli dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/12/2004, 13h55
  4. [struts] Destruction bean formulaire de session
    Par k4eve dans le forum Struts 1
    Réponses: 4
    Dernier message: 06/05/2004, 17h34
  5. [ Struts ] erreur de redirection
    Par CapToMatteo dans le forum Struts 1
    Réponses: 4
    Dernier message: 30/04/2004, 17h22

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