2010-10-23 9 views
2

J'ai 2 applications dans 2 serveurs différents - Tomcat (essentiellement un fichier .WAR) et un EAR dans jBoss. EAR est une application réutilisable où je vais authentifier l'utilisateur et renvoyer le contrôle à l'application sur le Tomcat. Pendant l'authentification, je crée un objet de session sur l'application jBoss.Servlet session invalidate

Lorsque je renvoie le contrôle à l'application sur Tomcat, je demande à l'utilisateur s'il souhaite fermer l'application d'authentification. Si l'utilisateur appuie sur le bouton « Oui » je vais devoir fermer la session utilisateur que de l'application d'authentification

Questions

1) Je lis que le filtre est la meilleure façon d'annuler la session. Dans mon cas, puisque l'application d'authentification est destinée à être utilisée par plus d'un utilisateur, comment le filtre saura-t-il quelle session il doit invalider? 2) Devrais-je transmettre l'identifiant de session créé dans l'application jBoss à l'application Tomcat de sorte que lorsque l'utilisateur décide de se déconnecter - je devrai renvoyer le même identifiant de session à l'application jBoss pour que le filtre invalide ?

Répondre

2

Vous n'avez pas besoin de filtre. Un Servlet simple va faire:

public LogoutServlet extends HttpServlet { 
    @Override 
    public void doGet(...) { 
     request.getSession().invalidate(); 
    } 
} 

map Ensuite, cette servlet /lougout dans web.xml, et chaque fois que l'utilisateur veut se déconnecter, il doit être envoyé à http://youhost/yourapp/logout.

Si vous voulez le déconnecter alors qu'il travaille déjà avec le serveur Tomcat, vous devez rediriger vers le serveur JBoss pour y invalider la session.

Notez que request.getSession() obtient la session actuelle - c'est-à-dire celle qui appartient à l'utilisateur qui en fait la demande. Votre conteneur de servlet (serveur) gère cela pour vous.

+0

Cest OK, mais comment puis-je suivre de quel utilisateur provient la requête? Dois-je passer l'identifiant de la session (je sais que ce n'est pas sûr de le faire). – sv1

+0

@ sv1 - ceci est suivi par le serveur. Le 'request.getSession()' donne la session en cours. – Bozho

+0

Merci! Je crois que ceci devrait être bon pour n'importe quel nombre d'utilisateurs sur différents serveurs d'applications. – sv1