iku8blog

Webエンジニアのタダのメモ。

SpringBoot2.2、gradleでセッションをredisで管理する

SpringSecurityでの認証を実装していることを前提とする。

redisを導入しておく

dockerでredisを入れる

docker-compose.yml

version: "3.3"
services:
  redis:
    image: "redis:latest"
    ports:
      - "6379:6379"
    volumes:
      - "./data/reis:/data"

redisを起動する

docker-compose up

これでlocalhost:6379でredisにアクセス可能

springbootにredis導入

springbootのセッションでredisを使うには、

  • spring-boot-starter-data-redis
  • spring-session-data-redis

を入れる必要があるらしい。

MVNRepositoryで検索してみる

https://mvnrepository.com/search?q=spring-boot-starter-data-redis https://mvnrepository.com/search?q=Spring+Session+Data+Redis+

build.gradleに以下記述

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-redis:2.2.6.RELEASE'
    implementation 'org.springframework.session:spring-session-data-redis:2.2.2.RELEASE'
}

application.ymlに認証情報等記述

spring:
  redis:
    host: localhost
    port: 6379
    database: 0
    password: null

これで自分のアプリーケーションにログインすると、セッション情報がredisに書き込まれているのがわかる。 アプリケーションを再起動しても、redisにセッションが書き込まれているためログイン状態が保持される。

redisに入ってみてみる

$ redis-cli
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> keys *

これでセッションが確認できる。