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 Java Discussion :

Détruire les variables session et vider la session dans la méthode logout


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut Détruire les variables session et vider la session dans la méthode logout
    Bonjour,

    Je développe un site web en Spring/hibernate. J'utilise des variables à portée session (exemple variable "Cart" qui représente un panier de shoping). Je voudrais savoir comment je peux détruire ces variables et vider ma session dans ma méthode "logout" ? J'ai cherché sur le net mais je n'ai pas trouvé une solution.

    Ci-dessous mon code :

    Dans spring-servlet.xml, je déclare mon bean à portée session en utilisant un proxy :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <bean id="cart" class="atr.gestionmagasin.attribute.Cart" scope="session">
          <!-- this next element effects the proxying of the surrounding bean -->
          <aop:scoped-proxy />
          </bean>
    J'ai un service qui gère cette variable session :
    CartServiceImpl.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
    20
    21
     
     
     
    @Service("cartService")
     
     
    public class CartServiceImpl implements CartService {
     
    	Cart cart;
     
    	public Cart getCart(){
    		return cart;
    	}
    	public void setCart(Cart cart){
    		this.cart= cart;
     
    	}
     
     
     
    }
    et dans mon controler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Autowired
    private CartService cartServiceImpl;
    //Je récupère ma variable cart dans le controler en utilisant //cartServiceImpl.getCart()
    J'ai essayé cette méthode pour détruire ma variable session et vider ma session lors de l'appel à la méthode logout mais ça ne marche pas, j'ai eu une excéption : Cart cannot be cast to org.springframework.aop.scope.ScopedObject

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @RequestMapping(value = "/logout")
     
    	 public String disconnectUser(Model model){
     
    //Récupérer la variable session "Cart".
    ScopedObject cscob = (ScopedObject) cartServiceImpl.getCart();
    //Supprimer la variable session de la session
    cscob.removeFromScope();
     
    	 return "Client_index";
    		}
    Quelqu'un a une proposition svp ?

    Merci.

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    as tu essayer d´avoir ta session en cours et de la detruire?
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HttpSession session = request.getSession();
    session.invalidate();
     session = request.getSession(false);
    Eric

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Bonjour,

    Merci Eric pour ta réponse.

    En fait je n'utilise pas le paramètre HttpServletRequest request dans les
    Méthodes de mon controler. Comment je peux récupérer mon
    objet request?

    Merci.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    J'ai essayé de faire un session.invalidate() mais ça ne marche toujours pas, les variable session gardent toujours leurs valeurs. Ci-dessous le code que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     @RequestMapping(value = "/logout")
     
    	 public String disconnectUser(Model model, HttpServletRequest request){
     
    		 HttpSession session = request.getSession();
    		 session.invalidate();
    		  session = request.getSession(false);
    model.addAttribute("cart", cartServiceImpl.getCart());
     
    	 return "Client_index";
    		}
    J'ai aussi essayé de vérifier le contenu de session en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    HttpSession session = request.getSession();
    Enumeration attributeNames =
    		      		session.getAttributeNames();
    		 System.out.println(attributeNames.hasMoreElements());
    Mais attributeNames.hasMoreElements() retourne "false", c'est à dire session ne contient pas d'attribut.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Une fois ta session invalidée, tout tes objet spring en scope session disparaitront à la fin de la requete.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Par défaut
    Le problème c est que je vois toujours mes variable session initialisées (panier et utilisateur connecté) sur mes pages jsp après l exexution de la méthode logout et la session.invalidate().

Discussions similaires

  1. Mettre les variables de différentes tables en session
    Par infirmier59 dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2010, 16h53
  2. Réponses: 27
    Dernier message: 27/09/2008, 22h56
  3. Réponses: 1
    Dernier message: 14/02/2007, 09h57
  4. Réponses: 7
    Dernier message: 15/05/2006, 13h36
  5. Détruire les variables d'une session
    Par kespy13 dans le forum Langage
    Réponses: 6
    Dernier message: 05/05/2006, 17h13

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