Spring Bootにおけるセッション有効期限の設定方法

こんにちは。ゆうせいです。

Spring Bootでセッションの継続時間(タイムアウト時間)を変更するには、主にアプリケーション設定ファイルであるapplication.propertiesまたはapplication.ymlを編集します。

設定方法

Spring Bootでは、組み込みのサーブレットコンテナ(Tomcatなど)のセッション設定をプロパティ経由で直接指定できます。

application.propertiesへの記述

以下の記述を追加します。時間は秒単位で指定します。例えば、30分に設定する場合は1800秒と記述します。

server.servlet.session.timeout=1800

application.ymlへの記述

YAML形式の場合は以下の階層構造で記述します。

server:

servlet:

session:

timeout: 1800

この設定により、最後にアクセスがあった時点から指定した秒数が経過すると、セッションは無効となります。

動作の仕組み

Webアプリケーションにおけるセッションタイムアウトは、サーバー側で管理されるセッション情報の保持期間を指します。ユーザーが操作を行わない時間が指定した値を超えると、サーブレットコンテナはセッションを破棄します。

論理的には以下の式で維持されます。

T_{limit} = T_{last\_access} + S_{timeout}

ここで、$T_{limit}$ はセッションが有効な終了時刻、$T_{last\_access}$ は最後のアクセス時刻、$S_{timeout}$ は設定されたタイムアウト時間です。アクセスがあるたびに $T_{last\_access}$ が更新されるため、一定時間無操作が続くと、$T_{limit}$ を過ぎた時点でセッションが終了します。

注意点

設定値を極端に長くすると、サーバーのメモリリソースを長時間消費し続けることになり、同時接続数が多い環境では負荷の原因となります。逆に短すぎると、ユーザーが作業中に頻繁にログアウトされるという利便性の低下を招きます。サービスの特性に合わせて適切な値を決定してください。

学習のステップ

この設定と管理について、以下の手順で理解を深めてください。

  1. 設定したタイムアウト時間を短く設定し、実際にブラウザから操作を止めてログアウトされるまでの時間を計測する。
  2. Spring Securityを使用している場合、セキュリティ設定によるタイムアウト制御と、サーブレットコンテナによるタイムアウト制御の違いを調べる。
  3. セッションのライフサイクル管理と、メモリ消費量との関係性について設計上の考慮事項を調査する。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。