はじめに
最近、初めてSpring Bootを使ってWebアプリを開発しようとした際に、簡単にセッション管理を行う方法を探していたところ、HttpSessionというAPIを見つけました。この記事では、このHttpSessionについて、自分自身の理解を深めるためにも解説します。
そもそもセッションって何?
セッションとは、Webアプリケーションにおいて、クライアント(ブラウザなど)とサーバー間のやり取りを一時的に保存し、管理する仕組みのことです。セッションは、ユーザーごとの状態を保持するために使用されます。例えば、Amazonで一度ログインしてしまえば、自分の購入履歴や欲しい物リストなどを確認できるようになるのもセッションのおかげです。
HttpSessionとは
HttpSessionはJava Servlet APIの一部であり、セッション情報を管理するためのオブジェクトです。
HttpSessionの使い方
HttpSessionではキーと値のペアとしてデータを保存します。
@PostMapping("/login")
public ResponseEntity<String> login(@RequestBody User user, HttpSession session) {
// ユーザーオブジェクトをセッションに保存
session.setAttribute("user", user);
return ResponseEntity.ok("Login Successful");
}
セッションからデータを取得するには、キーを使用します。
@GetMapping("/user")
public ResponseEntity<User> getUser(HttpSession session) {
// セッションからユーザーオブジェクトを取得
User user = (User) session.getAttribute("user");
if (user == null) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
return ResponseEntity.ok(user);
}
セッションの有効時間と無効化の設定も可能です。
@Bean
public ServletContextInitializer initializer() {
return servletContext -> {
servletContext.getSessionCookieConfig().setMaxAge(30 * 60); // 30分
};
}
@PostMapping("/logout")
public ResponseEntity<String> logout(HttpSession session) {
// セッションを無効化
session.invalidate();
return ResponseEntity.ok("Logout Successful");
}
まとめ
セッションは、認証機能を持つWebアプリを開発する上で欠かせない仕組みです。Spring Bootでは、HttpSessionを利用することで、このようにユーザーのログイン情報を簡単に管理することができます。