ホームページ  >  記事  >  Java  >  Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?

Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?

王林
王林転載
2023-05-11 22:55:041023ブラウズ

    1. はじめに

    Spring Boot プロジェクトでは、Spring Security の依存関係を導入しますが、何も行いません。プロジェクト Spring Security が開始されると、アクセス要求は傍受されます。

    Spring Boot は、Spring Security の自動構成ソリューションを提供します。これにより、少ない構成で Spring Security を使用できるようになります。

    では、このフィルター チェーンはどのようにロードされ、インターセプトを実装するのでしょうか?

    2. Spring Security フィルター チェーンの読み込み

    1.2. springSecurityFilterChain という名前のフィルターを登録します

    Spring Boot プロジェクトが開始されると、SecurityFilterAutoConfiguration クラスDelegatingFilterProxyRegistrationBean 登録フィルターが springSecurityFilterChain という名前でロードされます。

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?

    注: springSecurityFilterChain の名前は固定です。

    DelegatingFilterProxyRegistrationBean 登録が成功すると、フィルターがレジスタにロードされます。次に、getFilter() メソッドを呼び出して DelegatingFilterProxy プロキシ オブジェクトを生成し、それを IOC に登録します。

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?

    3. DelegatingFilterProxy クラスを表示します

    プロジェクトにアクセスすると、doFilter メソッドに入ります。 DelegatingFilterProxy クラス。

    DelegatingFilterProxy クラスは本質的に Filter であり、Filter インターフェイスを間接的に実装しますが、doFilter では実際に Spring コンテナから取得したプロキシ Filter の実装クラスを呼び出します。

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?

    返された FilterChainProxy オブジェクト。

    DelegatingFilterProxy クラスが springSecurityFilterChain という名前を通じて FilterChainProxy フィルターを取得し、このフィルターが最終的に実行されることがわかります。 #doFilter メソッド。

    springSecurityFilterChain 名詞が変更できないことを確認します

    initDelegate メソッドを表示します。

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?4. FilterChainProxy クラスの表示

    FilterChainProxy

    クラスは本質的にフィルターであるため、doFilter を表示します。方法。このクラスのプロパティに注意してください。 <pre class="brush:java;">public class FilterChainProxy extends GenericFilterBean { private static final Log logger = LogFactory.getLog(FilterChainProxy.class); private static final String FILTER_APPLIED = FilterChainProxy.class.getName().concat(&quot;.APPLIED&quot;); // 过滤器链 private List&lt;SecurityFilterChain&gt; filterChains; private FilterChainProxy.FilterChainValidator filterChainValidator; private HttpFirewall firewall;</pre>4.1 doFilterInternal メソッドの表示

    びっくりしましたか? 15 種類のフィルターすべてがここにあります。

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?4.2 getFilters メソッドの表示

    これらのフィルターは SecurityFilterChain オブジェクトにカプセル化されていることがわかります。

    ##5 SecurityFilterChain インターフェイスの表示 Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?

    SecurityFilterChain

    クラスはインターフェイスであり、実装クラス

    DefaultSecurityFilterChain## が 1 つだけあります。 # クラス。 DefaultSecurityFilterChainクラスのコンストラクター メソッドは、パラメーターを渡すことによって設定されるリスト フィルターを初期化します。

    フィルター チェーン パラメーターはいつ渡されますか?

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?6. SpringBootWebSecurityConfiguration クラスの表示

    Create

    Spring Security

    フィルター チェーンは、

    SpringBootWebSecurityConfiguration による自動構成のために

    Spring boot に渡されます。 クラス作成のインジェクション。

    WebSecurityConfigurerAdapterSpring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか? クラスを表示します。

    その後、HttpSecurity オブジェクトが挿入されます。HttpSecurity は、フィルター チェーン、リクエストの一致するパス、およびその他の関連する認証を保存する Spring Security の http コア構成として理解できます。 Spring Security の認可に関する重要な情報。

    Spring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?次に、Spring Security フィルター チェーンの作成を開始しました。これは Spring Boot によって自動的に構成され、合計 15 個のフィルターがあります。

    プロキシに OrderedFilter を使用し、order 属性を設定します。

    追加が完了したら、これらのフィルターを DefaultSecurityFilterChain オブジェクトにカプセル化します。

    最後に、WebSecurityConfiguration 構成を通じて springSecurityFilterChain をロードします。securityFilterChains 属性は WebSecurityConfiguration で維持され、フィルター チェーン内のすべてのフィルターを保存します。

    以上がSpring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。