[JAVA] Modifier le délai d'expiration de la session dans Spring Boot
L'histoire de la modification du délai d'expiration de la session dans Spring Boot
environnement
Spring Boot v1.5.1.RELEASE
et
Spring Boot v2.1.5.RELEASE (ajouté le 18/07/2019)
Méthode de modification
Modifier application.properties (ou fichier .yml)
N'importe lequel des éléments suivants peut être modifié sans changer le module, mais le processus lors de la création d'une session ou de la destruction d'une session ne peut pas être écrit.
Avant Spring Boot v2.x
- Définissez la propriété
server.session.timeout
sur n'importe quel nombre de secondes
- URL de référence: https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/common-application-properties.html
Spring Boot v2.x ou version ultérieure (ajouté le 2019/7/18)
- Définissez la valeur sur la propriété
server.servlet.session.timeout
- URL de référence: https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/common-application-properties.html
- D'après le document ci-dessus, il semble que vous puissiez spécifier en minutes ou en secondes en ajoutant un suffixe (m = minute, s = seconde) à la valeur numérique.
- Si vous spécifiez une valeur inférieure à 60 secondes, elle ne sera pas inférieure à 60 secondes (minimum 1 minute)
- Le temps d'expiration de la session est finalement géré en minutes, il semble que moins de 60 secondes seront tronquées
- URL de référence1: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/ tomcat / TomcatServletWebServerFactory.java
- URL de référence2: http://k6i.hateblo.jp/entry/2018/07/14/173704
Comment implémenter HttpSessionListener
- Créez une classe qui implémente HttpSessionListener
- Lors de la création d'une session, vous pouvez écrire le traitement que vous souhaitez effectuer lors de la destruction de la session
- Est-ce redondant si vous souhaitez simplement modifier le délai d'expiration de la session?
MySessionListener.java
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
//Définir le délai d'expiration
HttpSession session = se.getSession();
session.setMaxInactiveInterval(1800); //Spécifiez le nombre de secondes d'expiration. Le nombre négatif n'expire pas la session
//Traitement lors de la création d'une session
// ...
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
//Traitement lors de la suppression d'une session
// ...
}
WebAppConfig.java
@Configuration
@Import({MySessionListener.class}) //Importer et activer
public class WebAppConfig {
}