Salut,
j'ai une petite une appli web, je veux quand le time out est atteint et que l'utilisateur fait n'importe quelle action, il sera dirigé vers la page de login.
Quelqu'un aurait une idée, comment faire ?
Merci par avance
Version imprimable
Salut,
j'ai une petite une appli web, je veux quand le time out est atteint et que l'utilisateur fait n'importe quelle action, il sera dirigé vers la page de login.
Quelqu'un aurait une idée, comment faire ?
Merci par avance
C'est le comportement par défaut lorsque la sécurité est activée.
Quand la session expire, les vérifications pour voir si l'utilisateur est bien identifié échoue et le serveur d'application traite cet utilisateur comme un utilisateur qui ne s'est pas authentifié, il le redirige alors vers la page de login.
Paramètrer la sécurité sur le serveur J2EE ne t'empêche pas d'avoir une page JSP de login custom.
Tu peux te plugger sur un fichier, une base de donnée ou un annuaire LDAP.
Salut,
Ce n'est pas vraiment une question de sécurité...
Je suppose que tu dois utiliser la session pour stocker les informations sur l'utilisateur courant. Or la session n'est pas éternelle, et ton problème survient lors du timeout de la session.
:arrow: Les serveurs J2EE ne conservent la session qu'un temps limité (30 minutes en général je crois). Lorsque ce temps est écoulé, la session est automatiquement invalidé et détruite. Du coup tu considères l'utilisateur comme déconnecté !
Une solution serait d'augmenter ce delai de timeout, via le web.xml :
Code:
1
2
3
4 <session-config> <!-- Durée du timeout : 1 heure --> <session-timeout>60</session-timeout> </session-config>
Mais :
- Cela ne fait que "retarder" le problème : si la durée d'inactivité dépasse ce temps, tu auras toujours le même problème.
- Tu augmentes le nombre de sessions existantes à la fois, car le serveur les conserveras beaucoup plus longtemps.
A mon avis la meilleure solution serait de mettre en place un système de re-connexion automatique. Pour cela tu peux utiliser le sessionID car même si sa session est morte, le navigateur l'enverra quand même :
- Lorsqu'un utilisateur se connecte, tu lui associes son sessionID quelque part (par exemple dans la BD).
- Lorsque tu détectes la création d'une nouvelle session, et que l'utilisateur te fournis un numéro de session inexistante, tu recherches les infos utilisateur selon le numéro de sessionID, et tu le reconnecte automatiquement :
Code:
1
2
3
4
5
6 // On a une nouvelle session, mais le navigateur avait bien envoyé un numéro de session if ( session.isNew() && request.getRequestedSessionId()!=null ) { String lastSessionID = request.getRequestedSessionId(); // TODO : reconnection }
a++