検索
ホームページJava&#&チュートリアルSpringBoot2.x バージョンで SpringSession を使用して一般的な問題を解決する方法

SpringBoot2.x SpringSession Traps

コンテキストの初期化中に例外が発生しました - 更新の試行をキャンセルしています: org.springframework.beans.factory.BeanCreationException: 'org.springframework.boot.autoconfigure という名前の Bean の作成中にエラーが発生しました。 .session.SessionAutoConfiguration$ServletSessionRepositoryValidator': init メソッドの呼び出しに失敗しました。ネストされた例外は org.springframework.boot.autoconfigure.session.SessionRepositoryUnavailableException: セッション リポジトリを自動構成できませんでした。構成を確認してください (セッション ストア タイプは 'redis' です)

これは、spring-session-data-redis 依存関係が欠落しているためです。

SpringBoot2 について Spring-session-core を使用すると、spring-session-data-redis が読み込まれないため、ユーザーは spring-session と redis の間に依存関係を追加する必要があります。

Springboot 2.x の罠 - クロスドメインがセッションの問題を引き起こす

現在、IT 業界ではフロントエンドとバックエンドを分離するのが主流ですが、今後は必ず分離することになります。分離プロセス中のクロスドメインの問題。

クロスドメインとは何ですか?

は、ブラウザがあるドメイン名の Web ページから別のドメイン名にリソースを要求するときに、ドメイン名、ポート、またはプロトコルが異なる場合、それはクロスドメインであることを意味します。

遭遇したシナリオ

バックグラウンド管理プロジェクトに springboot shrio vue を使用すると、hiroSession の現在ログインしているユーザーを取得できません。

そこで確認したところ、オンラインです。ドメインをまたぐときにセッションを通過させるだけで十分だと言いました

バックエンド

 <!--SpringSession依赖-->
 <dependency>
  <groupid>org.springframework.session</groupid>
  <artifactid>spring-session-core</artifactid>
 </dependency>
 <!--SpringSessionRedis依赖-->
 <dependency>
  <groupid>org.springframework.session</groupid>
  <artifactid>spring-session-data-redis</artifactid>
 </dependency>

フロントエンド

#使用使用Redis缓存session数据
spring.session.store-type=REDIS
#Redis服务器地址
spring.redis.host=127.0.0.1
#Redis服务器端口号
spring.redis.port=6379

しかし、それでもNoに設定した後も同じです。Baidu とトラブルシューティングを 1 日行った後、springboot 1.x にロールバックしましたが、そのような問題は発生しませんでした。そのため、原因は springboot 2 へのアップグレードによって引き起こされていることがわかりました。 .x. さて、殺人者を捕まえました。適切な薬を服用できるようになりました。オンラインで springboot の 2.x スプリング セッションへのアップグレードに関連する問題について読みました。

ついに新しい世界を発見しました。Spring-session 2.x では、実際に SameSite が Cookie に導入されました。デフォルト値は Lax です。わかりました。これが何であるかを見てみましょう。

SameSite Cookie は CSRF 攻撃を防ぐために使用されます。値は 2 つあります: Strict と Lax

SameSite = Strict:

は厳密モードを意味し、この Cookie はいかなる状況でもサードパーティ Cookie として使用できないことを示します。

SameSite = Lax:

はリラックス モードを意味し、最初のモードとして使用できます。 GET リクエスト サードパーティの Cookie ですが、クロスドメインのポスト アクセス用の Cookie を運ぶことはできません (これは非常に面倒です。検証インターフェイスは POST リクエストです) 概要: フロントエンドからバックエンドへのリクエスト、およびそれぞれのセッションが異なります。毎回新しいセッションになるため、ユーザー情報は取得されません

解決策:

SameSite を空に設定します

@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.setAllowCredentials(true);
        // 允许任何域名使用
        corsConfiguration.addAllowedOrigin("*");
        // 允许任何头
        corsConfiguration.addAllowedHeader("*");
        // 允许任何方法(post、get等)
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setMaxAge(3600L);
        return corsConfiguration;
    }
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}

以上がSpringBoot2.x バージョンで SpringSession を使用して一般的な問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。