使用Spring Boot可更改会话超时时间。(使用Spring Boot可以修改会话过期时间。)
谈论如何在Spring Boot中更改会话超时时间。
环境
Spring Boot v1.5.1.RELEASE
和
Spring Boot v2.1.5.RELEASE(增订于2019年7月18日)
修改途径
编辑 application.properties(或 .yml 文件)
无论以下哪种情况,都可以在不更改模块的情况下进行更改,但无法编写用于创建或销毁会话时的处理代码。
从Spring Boot v2.x开始之前
server.session.timeout プロパティに任意の秒数をセットする
参考 URL: https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/common-application-properties.html
截至2019年7月18日,Spring Boot v2.x及以上版本。
server.servlet.session.timeout プロパティに値をセットする
参考 URL: https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/common-application-properties.html
上記ドキュメントより、数値にサフィックス(m=分、s=秒)を付ければ分または秒単位に指定できる模様
60 秒未満の値を指定しても60 秒未満にはならない(最短 1 分)
セッションタイムアウト時間は最終的に分で管理されており、60 秒未満は切り捨てられる模様
参考 URL1: 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
参考 URL2: http://k6i.hateblo.jp/entry/2018/07/14/173704
实现 HttpSessionListener 的方法
-
- HttpSessionListener を実装したクラスを作成
-
- セッションを作るとき、セッションを破棄するときに行いたい処理を書ける
- 単にセッションタイムアウト時間を変更したいときは冗長か
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
// タイムアウト時間を設定
HttpSession session = se.getSession();
session.setMaxInactiveInterval(1800); // タイムアウト秒数を指定。負の数だとセッションタイムアウトしない
// セッション生成時の処理
// ...
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
// セッション破棄時の処理
// ...
}
@Configuration
@Import({MySessionListener.class}) // インポートして有効化
public class WebAppConfig {
}