springsecurity + セッション共有 + Redis ユーザーログイン、権限検証、

目次

1. 関連する依存関係を pom.xml に追加します。

2. application.yml に構成を追加します。

3. テスト

4. 落とし穴記録: 上記の構成が適切である場合、次のエラーが発生します。


Spring Security の関連構成はここにはリストされていません。

1. 関連する依存関係を pom.xml に追加します。

2 つの依存関係を追加します: Redis への依存とセッション キャッシュとしての Redis

    <dependencies>
        ...
        <!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- 引用SpringSession,同时使用Redis存储缓存数据 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>
    </dependencies>

2. application.yml に構成を追加します。

server:
    session:
      cookie:
        name: MYJSESSIONID #可以修改自己定义session名
spring:
  session:
    store-type: redis #使用使用Redis缓存session数据
  redis: #Redis服务器相关配置
    host: 127.0.0.1
    port: 6379
    database: 0
    timeout: 1800000
    lettuce:
      pool:
        max-active: 20
        max-wait: -1
        max-idle: 8
        min-idle: 0

3. テスト

原則として、springboot スタートアップ クラスを直接起動するだけで、通常どおり使用できます。

1) 郵便配達員のテスト ログイン:

2) Redis の種類と保存されたセッション記録を確認します。

4. 落とし穴記録: 上記の構成が適切である場合、次のエラーが発生します。

コンテキストの初期化中に例外が発生しました - 更新試行のキャンセル: org.springframework.beans.factory.BeanCreationException: 'org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$ServletSessionRepositoryValidator' という名前の Bean 作成エラー: init メソッドの呼び出しに失敗しました。ネストされた例外はorg.springframework.boot.autoconfigure.session.SessionRepositoryUnavailableException:セッション リポジトリを自動構成できません。構成を確認してください (セッション ストア タイプは「redis」です)。
これは、新しい springboot バージョンが考えられるためです (私の現在のバージョンは 2.5.3 です) )、メインのスタートアップ クラスにステートメントを追加する必要があります: @EnableRedisHttpSession。

(以前のバージョン 2.1.4.RELEASE では、追加しなくても自動的に有効になります)。

ここではセッションの有効期限を 1 時間に設定しました。ネイティブのserver.session.timeoutプロパティは無効になりました。

@SpringBootApplication
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800 * 2 )
public class AuthApplication {

    public static void main(String[] args) {
        SpringApplication.run(AuthApplication.class,args);
    }
}


 

おすすめ

転載: blog.csdn.net/louis_lee7812/article/details/127436264