使用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 {
}
广告
将在 10 秒后关闭
bannerAds