Session de validation filtre qui déconnecte l'utilisateur lors de la session a expiré
J'ai une session de validation Filtre qui déconnecte l'utilisateur lors de la session a expiré.
Voici un morceau de code mais cela ne fonctionne pas. Pas de moyens de travail, ce n'est pas une redirection vers la page de connexion, même si la session expire.
Merci de m'aider à résoudre ce problème.
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
HttpServletRequest req = (HttpServletRequest) request;
HttpSession s = req.getSession(false);
if (s==null)
{
//redirect to login page with session expiry message
} else {
chain.doFilter(request, response);
}
}
avez-vous vérifié session id de rediriger les bloquer? est-il en train de changer? Est-il possible que votre douce/le cadre des appels getSession(true) quelque part?
OriginalL'auteur Kiran | 2011-09-10
Vous devez vous connecter pour publier un commentaire.
Ce fait honnêtement pas de proférer des sens. Si vous stockez l'utilisateur connecté en tant qu'attribut de la session et intercepter le "connecté" statut basé sur la présence de l'utilisateur connecté à la session, alors vous n'avez pas besoin d'manuellement déconnexion de l'utilisateur lors de la session a expiré. Lors de la session expire, tous ses attribtues vont se perdre de toute façon et, par conséquent, l'utilisateur sera "automatiquement" déconnecté.
Voici un exemple de la façon dont vous pouvez vous connecter à l'utilisateur dans la
doPost()
d'un servlet qui est invoquée par un POSTE de soumettre le formulaire de connexion JSP.Voyez-vous, lorsque la connexion est valide, l'utilisateur est stocké dans un attribut de session. Le reste de votre code pourrait juste vérifier si il est nul ou n'est pas de déterminer si l'utilisateur est connecté. Chaque fois que la session expire, il devient automatiquement nulle.
Je n'ai aucune idée de ce que vous essayez de faire, depuis la première exigence fonctionnelle n'a pas de sens. Cependant, il existe deux exigences fonctionnelles liées à la fin de la session et la page de connexion. Je suppose que vous fait besoin de l'un d'entre eux:
"Comment puis-je rediriger le visiteur vers la page de connexion quand il demande une page qui est limité à des utilisateurs connectés?"
Vous avez besoin pour créer un filtre et la carte sur le (commun) modèle d'URL de l'restreinte page(s). Dans le filtre, il suffit de vérifier si l'utilisateur est présent dans la session, puis continuer la chaîne, d'autre rediriger vers la page de connexion.
"Comment puis-je rediriger automatiquement la page actuellement ouverte à la page de connexion lors de la session expire?"
Utiliser le
<meta>
actualiser en combinaison avecHttpSession#getMaxInactiveInterval()
.Ce sera automatiquement rediriger la page en cours à la
url
chaque fois que la session expire. Le${pageContext.session.maxInactiveInterval}
expression inline l'expiration de la session de temps en secondes, ce qui est exactement ce que lescontent
attribut besoins.Apparemment, il imprimé
0
.OK. Pourriez-vous me guider comment puis-je rediriger automatiquement lors de la session expire ?
Une grande réponse, mais juste par curiosité, quelle est la raison de ne pas utiliser getSession(false) pour le suivi de la session. Il est clairement écrit dans les docs qu'elle retourne null quand il n'y a pas de session existante joint à la demande.
parce que vous voulez le conteneur pour en créer un de toute façon. Notez que le filtre ne doit pas le faire parce que vous ne voulez pas que le conteneur pour créer inutilement, même lorsque vous n'allez pas en faire un usage quelconque.
OriginalL'auteur BalusC