J'ai créé une application SpringBoot MVC/Security 1.2.2.RELEASE et mon application.properties contient des paramètres de serveur tels que
#Tomcat port and contextPath details
server.port=8080
server.contextPath=/test
#server.session-timeout=120
server.sessionTimeout=120
Les états documentation
server.session-timeout= # session timeout in seconds
mais ServerProperties.Java utilise sessionTimeout;
Si vous regardez le code application.properties que j'ai posé, j'ai essayé les deux indépendamment et ensemble, mais je ne suis pas dépassé après 2 minutes, je n'ai pas d'autre code écrit explicitement pour effectuer un traitement de session.
Quelqu'un at-il rencontré ce problème? Qu'est-ce qui me manque ou que je fais mal?
Je ne sais pas pour quelque raison que ce soit la mise
server.session.timeout=120
n'a pas fonctionné pour moi cependant, lorsque j'ai défini le délai d'expiration de la session et l'âge maximal du cookie, comme ci-dessous:
server.session.cookie.max-age=120
server.session.timeout=120
ça marche parfaitement
Je ne suis pas sûr de savoir à quoi sert server.session.timeout, car lorsque je le définit sur un nombre spécifique et que je surveille la création de la session, l'expiration de la session n'est pas modifiée.
J'utilise une session printanière et une intégration redis. Dans mon cas, je dois définir la valeur maxInactiveIntervalInSeconds sur 120 (secondes). Cette opération peut être effectuée via redisHttpSessionConfiguration.
Et puis, si je vais sur Redis pour rechercher la session, je peux voir que son expiration a été modifiée en 120 secondes et que le délai d'expiration de la session fonctionne.
Une de mes suggestions serait d'essayer de savoir si vous pouvez configurer le maxInactiveIntervalInSeconds (ou similaire) de la session (par programme) ou dans le fichier de propriétés et surveiller les modifications de la session.
(Ceci s'applique à Spring 1.5.x au moment d'écrire ces lignes)
Notez que si vous utilisez Redis session @EnableRedisHttpSession (comme dans le cas de l'autre commentaire --Phoebe Li ), la propriété d'application server.session ne sera pas appliquée. Vous devrez le définir manuellement avec le code suivant:
@EnableRedisHttpSession
public class HttpSessionConfig {
@Bean
public RedisOperationsSessionRepository sessionRepository(RedisConnectionFactory factory) {
RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(factory);
//Set the TTL of redis' key, which in turn will expire session when TTL is reached
sessionRepository.setDefaultMaxInactiveInterval(15); //e.g. 15 seconds
return sessionRepository;
}I
}
Dans application.yml de mon application Spring Boot 2
# A negative value means that the cookie is not stored persistently and will be deleted when the Web browser exits
server:
servlet:
session:
cookie:
max-age: -1
timeout: -1
Avec ces paramètres, JSESSIONID
heure d'expiration du cookie est définie sur "Lorsque la session de navigation se termine".
Vous pouvez essayer d'ajouter ces deux instructions.
server.session.cookie.max-age=120
server.session.timeout=120
Vous trouverez un exemple complet sur mon blog ici: http://www.onlinetutorialspoint.com/spring-boot/how-to-set-spring-boot-Tomcat-session-timeout.html