java httpsession est-elle valable?
je suis en utilisant java servlet tomcat.
je l'ai enregistrer dans une table de hachage le nom d'utilisateur et le httpsession avec l'attribut usrname
je voudrais savoir si il existe un moyen de savoir si le httpsession est valide.
j'ai essayé:
try{
String user = httpSession.getAttribute("username")
return "is valid";
}catch(IllegalStateException e){
return "is not valid";
}
tnks pour la réponse, mais comment puis-je faire si je n'ai pas l'habitude qu'un "journal" de l'utilisateur de se connecter à partir de plus d'une place? si je controll que si je crée une nouvelle session je ne peux pas savoir si il est connecter de pentecôte une autre session.
OriginalL'auteur Matteo | 2011-07-15
Vous devez vous connecter pour publier un commentaire.
Pas besoin de stocker les httpSession dans votre propre hachage.
Regarder l'api pour la HttpServletRequest. Si vous regardez getSession(Boolean x) (passer à false si il ne marche pas créer une nouvelle session) permettra de déterminer si la session est valide. Voici un exemple
Sur une note de côté, Si j'ai lu votre question correctement et vous êtes le stockage de l'information dans votre propre carte, vous devez être prudent que vous ne créez pas une fuite de mémoire et de compensation sont les entrées de la table de hachage de vous-même.
OriginalL'auteur Sean
Je suis d'accord avec Sean. Je vais ajouter qu'une bonne pratique pour ce type de vérification est d'utiliser un Filtre
Voir ici Filtre De Servlet
Il suffit de prendre le code Sean ont écrit et le mettre dans un Filtre à la place. Définir un filtre dans le web.xml et à chaque fois qu'une demande de venir dans, le filtre sera exécuté.
De cette façon, vous pouvez vérifier si l'utilisateur est auth. sans encombrer votre servlet code.
Vous avez raison, et votre réponse a été très bon.. je voulais juste rajouter mes 2 cents
OriginalL'auteur Cygnusx1
Plutôt que de vérifier si une session enregistrée est valide, vous devriez être à la recherche à la
HttpServletRequest
sur votre servlet, et la vérification deisRequestedSessionIdValid()
. Lorsque vous travaillez dans les servlets, vous pouvez toujours obtenirSession
de laRequest
, plutôt que de les enregistrer dans une table de hachage.Mon (peut-être erronée) hypothèse serait que le moment tomcat voit l'id de session, avant de transmettre la demande de la servlet, il va vérifier pour voir si il était encore expiré, et si pas de réinitialiser le temps de garder la session vivante quelle que soit la session par défaut est de longueur. Non?
Mais vous pourriez avoir une requête de fermeture de session dans le même temps. Multithreads, multi servlets, vous vous souvenez?
En effet! Bon appel.
OriginalL'auteur Terrell Plotzki