web-dev-qa-db-fra.com

Quel est le délai d'expiration de session par défaut et comment le configurer lors de l'utilisation de la session Spring avec Redis comme backend

Mon application utilise actuellement Spring Session avec Redis comme backend.

J'ai cherché dans documentation officielle pour Spring Session mais je n'ai pas pu trouver le délai d'expiration de session par défaut lors de l'utilisation de ce module.

De plus, je ne sais pas comment modifier ce délai par défaut si nécessaire.

Quelqu'un peut-il s'il vous plaît conseiller?

15
balteo

Le moyen le plus simple de configurer le délai d'expiration de la session lors de l'utilisation du référentiel redis est

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)

La session expire lorsqu'elle n'est plus disponible dans le référentiel. Le délai d'attente peut être configuré avec setDefaultMaxInactiveInterval(int) sur RedisOperationsSessionRepository et MapSessionRepository. La valeur par défaut est minutes.

Si vous utilisez Spring Boot, à partir de la version 1.3, il synchronisera automatiquement la valeur avec la propriété server.session.timeout De la configuration de l'application.

Notez que l'un des inconvénients lors de l'utilisation de la session de printemps est que javax.servlet.http.HttpSessionListener N'est pas invoqué.

Si vous devez réagir aux événements d'expiration de session, vous pouvez vous abonner à l'événement d'application SessionDestroyedEvent de votre application Spring.

26
tsachev

server.session.timeout est obsolète et a été remplacé par server.servlet.session.timeout dans Spring Boot 2.0.

2
Fedor