Spring Boot プロジェクトでは、Spring Security の依存関係を導入しますが、何も行いません。プロジェクト Spring Security が開始されると、アクセス要求は傍受されます。
Spring Boot は、Spring Security の自動構成ソリューションを提供します。これにより、少ない構成で Spring Security を使用できるようになります。
では、このフィルター チェーンはどのようにロードされ、インターセプトを実装するのでしょうか?
Spring Boot プロジェクトが開始されると、SecurityFilterAutoConfiguration
クラスDelegatingFilterProxyRegistrationBean
登録フィルターが springSecurityFilterChain
という名前でロードされます。
注: springSecurityFilterChain の名前は固定です。
DelegatingFilterProxyRegistrationBean
登録が成功すると、フィルターがレジスタにロードされます。次に、getFilter() メソッドを呼び出して DelegatingFilterProxy
プロキシ オブジェクトを生成し、それを IOC
に登録します。
プロジェクトにアクセスすると、 の
doFilter メソッドに入ります。 DelegatingFilterProxy
クラス。
DelegatingFilterProxy クラスは本質的に Filter であり、Filter インターフェイスを間接的に実装しますが、doFilter では実際に Spring コンテナから取得したプロキシ Filter の実装クラスを呼び出します。
返された FilterChainProxy
オブジェクト。
DelegatingFilterProxy クラスが
springSecurityFilterChain という名前を通じて
FilterChainProxy フィルターを取得し、このフィルターが最終的に実行されることがわかります。 #doFilter
メソッド。
initDelegate メソッドを表示します。
4. FilterChainProxy クラスの表示
FilterChainProxy クラスは本質的にフィルターであるため、doFilter
を表示します。方法。このクラスのプロパティに注意してください。 <div class="code" style="position:relative; padding:0px; margin:0px;"><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(".APPLIED");
// 过滤器链
private List<SecurityFilterChain> filterChains;
private FilterChainProxy.FilterChainValidator filterChainValidator;
private HttpFirewall firewall;</pre><div class="contentsignin">ログイン後にコピー</div></div>
4.1 doFilterInternal メソッドの表示
4.2 getFilters メソッドの表示
##5 SecurityFilterChain インターフェイスの表示
DefaultSecurityFilterChain## が 1 つだけあります。 # クラス。 DefaultSecurityFilterChain
クラスのコンストラクター メソッドは、パラメーターを渡すことによって設定されるリスト フィルターを初期化します。
6. SpringBootWebSecurityConfiguration クラスの表示
Create
Spring SecuritySpring boot に渡されます。
クラス作成のインジェクション。
WebSecurityConfigurerAdapter クラスを表示します。
次に、Spring Security フィルター チェーンの作成を開始しました。これは Spring Boot によって自動的に構成され、合計 15 個のフィルターがあります。
プロキシに OrderedFilter を使用し、order 属性を設定します。追加が完了したら、これらのフィルターを DefaultSecurityFilterChain オブジェクトにカプセル化します。
最後に、WebSecurityConfiguration 構成を通じて springSecurityFilterChain をロードします。securityFilterChains 属性は WebSecurityConfiguration で維持され、フィルター チェーン内のすべてのフィルターを保存します。
以上がSpring Securityフィルタチェーンロードを統合したSpringBootの実行プロセスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。