J'utilise JSF 1.2 avec Richfaces et Facelets.Comment invalider une session utilisateur lorsqu'il se connecte deux fois avec les mêmes informations d'identification
J'ai une application avec de nombreux beans de session et certains beans d'application.
L'utilisateur se connecte avec, disons, Firefox. Une session est créée avec ID = "A"; Ensuite, il ouvre Chrome et se reconnecte avec les mêmes informations d'identification. Une session est créée avec ID = "B".
Lorsque la session "B" est créée, je veux être capable de détruire la session "A". Comment faire ça?
Aussi. Lorsque l'utilisateur de Firefox fait quelque chose, je veux être capable d'afficher une fenêtre contextuelle ou une sorte de notification disant "Vous avez été déconnecté parce que vous vous êtes connecté depuis un autre endroit".
J'ai un sessionListener qui garde la trace des sessions créées et détruites. Le truc, c'est que je pourrais sauvegarder l'objet HTTPSession dans un bean d'application et le détruire quand je détecterai que l'utilisateur s'est connecté deux fois. Mais quelque chose me dit que c'est juste faux et ne fonctionnera pas.
JSF conserve-t-il une trace des sessions quelque part sur le serveur? Comment y accéder par identifiant? Si non, comment expulser la première connexion d'un utilisateur lorsqu'il se connecte deux fois?
Merci pour la réponse. Je suppose que "sessionMap.put (" utilisateur ", utilisateur);" devrait être "sessionMap.put (nom d'utilisateur, utilisateur);". Autrement, si un utilisateur différent avec des informations d'identification différentes se connecte, le premier utilisateur sera renvoyé. – pakore
Ce n'est pas normal. Vous ne souhaitez pas avoir d'utilisateurs connectés différents pendant une session client. Ne confondez pas non plus la carte de session avec la carte d'application. – BalusC
Ok, je comprends maintenant que sessionMap est ExternalContext.sessionMap. Cela fonctionne :). – pakore