48 votes

Comment définir le délai d'expiration de session de manière dynamique dans les applications Web java?

Je dois donner à mon utilisateur une interface Web pour modifier l'intervalle de délai de session. Ainsi, différentes installations de l’application Web pourraient avoir des délais différents pour leurs sessions, mais leur fichier web.xml ne peut pas être différent.

Existe-t-il un moyen de définir le délai d'expiration de la session par programmation, de sorte que je puisse utiliser, par exemple, ServletContextListener.contextInitialized () pour lire l'intervalle configuré et le définir au démarrage de l'application?

Merci beaucoup.

76voto

Michael Points 9231

Au lieu d'utiliser un ServletContextListener, utiliser un HttpSessionListener. Dans l' sessionCreated() méthode, vous pouvez définir le délai d'expiration de session par programmation.

public class MyHttpSessionListener implements HttpSessionListener{
  public void sessionCreated(HttpSessionEvent event){
    event.getSession().setMaxInactiveInterval(15*60); //in seconds
  }
  public void sessionDestroyed(HttpSessionEvent event){}
}

Et n'oubliez pas de définir l'auditeur dans le descripteur de déploiement:

<webapp>
...
  <listeners>
    <listener-class>com.example.MyHttpSessionListener</listener-class>
  </listeners>
</webapp>

Encore, je vous recommande de créer différents web.xml fichiers pour chaque application et de définir le délai d'expiration de session il y a:

<webapp>
...
  <session-config>
    <session-timeout>15</session-timeout> <!-- in minutes -->
  </session-config>
</webapp>

35voto

Pascal Thivent Points 295221

Est-il possible de définir le délai d'expiration de session par programmation

Il existe essentiellement trois façons de définir le délai d'expiration de session de la valeur:

  • en utilisant l' session-timeout de la norme web.xml le fichier ~ou~
  • en l'absence de cet élément, la valeur par défaut du serveur session-timeout de la valeur (et donc de la configuration au niveau du serveur) ~ou~
  • par programmation à l'aide de l' HttpSession. setMaxInactiveInterval(int seconds) méthode de votre Servlet ou JSP.

Mais notez que la dernière option définit la valeur de délai d'expiration de l' actuelle session, ce n'est pas un paramètre global.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X