Selon la documentation de Spring Boot, le délai d'expiration de la session peut être configuré en définissant
server.servlet.session.timeout= 300s
dans application.properties
fichier. Dans ce post et dans documentation Spring Boot il est également dit ainsi. Mais malheureusement, cela ne fonctionne pas pour moi.
Existe-t-il une autre configuration pour obtenir le résultat attendu?
Je poste une réponse car ce scénario est nouveau pour moi. Et je n'ai pas de solution appropriée pas à pas. Selon la suggestion de M. Deinum
J'ai créé un web.xml
fichier sous WEB-INF
dossier. La structure du projet est comme
src
|_ main
|_ Java
|_ resources
|_ webapp
|_ WEB-INF
|_ web.xml
Et en web.xml
J'ai configuré <session-timeout>...</session-timeout>
Ma web.xml
est comme
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://Java.Sun.com/xml/ns/javaee"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<session-config>
<session-timeout>5</session-timeout>
</session-config>
</web-app>
Et maintenant, le temps de session de ma webapp sur le serveur fonctionne selon ma configuration. Merci à M. Deinum
Vous pouvez utiliser l'approche 1:
server.servlet.session.timeout=30s
server.servlet.session.cookie.max-age=30s
Ça marche bien pour moi
Une cause possible de ce problème peut être l'utilisation de @EnableRedisHttpSession
. Comme expliqué dans ce réponse :
En utilisant @EnableRedisHttpSession, vous dites à Spring Boot que vous souhaitez prendre le contrôle complet de la configuration des sessions HTTP basées sur Redis. Par conséquent, sa configuration automatique est désactivée et server.servlet.session.timeout n'a aucun effet. Si vous souhaitez utiliser server.servlet.session.timeout, vous devez supprimer @EnableRedisHttpSession. Sinon, si vous souhaitez utiliser @EnableRedisHttpSession, vous devez utiliser l'attribut maxInactiveIntervalInSeconds pour configurer le délai d'expiration de la session.
J'espère que cela aide quelqu'un.
Utilisez HttpSessionListener
.
server.servlet.session.timeout
ne fonctionne que pour le conteneur intégré.
@Configuration
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
event.getSession().setMaxInactiveInterval(30);
}
}
spring doc La dernière version de SpringBoot utilise les propriétés suivantes.
server.servlet.session.timeout=30m