Bonjour à tous,
Je développe un intranet en JEE avec les frameworks ICEfaces, Spring et Hibernate.
Je suis sur la partie identification (login, mot de passe, connceter, ...)
Le souci c'est que lorsque plusieurs utilisateurs se connectent, ils ont la même session. Je pense que je dois mal utiliser le mécanisme de session.
Mon intranet est construit de la manière suivante :
- Une couche présentation (ICEfaces),
- Une couche service(Spring)
- Une couche dao (Hibernate et Spring)
J'envoie bien deux objets utilisateurs différents lors de la création de la session.
Je pense que le problème vient lors de la récupération de la session. On dirait qu'il récupère la session courante, donc la première session créee.
Voici le code pour créer la session et y ajouter un utilisateur:
Et voici le code pour récupérer une session :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /** * Créé une session pour l'utilisateur qui veut se connecter * @param utilisateurService : service de l'utilisateur */ public void setSession(Utilisateurs utilisateur) { // récupération de l'objet qui se charge de transmettre les requêtes du client au serveur par le protocole HTTP. HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); // récupération de la session relative à l'utilisateur HttpSession session = req.getSession(); // stockage du service dans la session session.setAttribute("utilisateurConnecte", utilisateur); }
En vous remerciant,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /** * construit un contrôlleur de l'interface */ public IntranetOSControlleur(){ // récupération de l'objet qui se charge de transmettre les requêtes du client au serveur par le protocole HTTP. HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); // récupération du nom et prénom de l'utilisateur HttpSession session = req.getSession(); Utilisateurs utilisateurConnecte = (Utilisateurs)session.getAttribute("utilisateurConnecte"); this.nomCompletUtilisateurConnecte = utilisateurConnecte.getPrenom() + " " + utilisateurConnecte.getNomUtilisateur(); }
Nicolas
Partager