創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
本篇文章和大家了解一下Spring Security內(nèi)置Filter的介紹。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
1. 前言
上一文我們使用 Spring Security 實現(xiàn)了各種登錄聚合的場面。其中我們是通過在 UsernamePasswordAuthenticationFilter
之前一個自定義的過濾器實現(xiàn)的。我怎么知道自定義過濾器要加在 UsernamePasswordAuthenticationFilter
之前。我在這個系列開篇說了 Spring Security 權(quán)限控制的一個核心關(guān)鍵就是 過濾器鏈 ,這些過濾器如下圖進行過濾傳遞,甚至比這個更復(fù)雜!這只是一個最小單元。
Spring Security 內(nèi)置了一些過濾器,他們各有各的本事。如果你掌握了這些過濾器,很多實際開發(fā)中的需求和問題都很容易解決。今天我們來見識一下這些內(nèi)置的過濾器。
2. 內(nèi)置過濾器初始化
在 Spring Security 初始化核心過濾器時 HttpSecurity
會通過將 Spring Security 內(nèi)置的一些過濾器以 FilterComparator
提供的規(guī)則進行比較按照比較結(jié)果進行排序注冊。
2.1 排序規(guī)則
FilterComparator
維護了一個順序的注冊表 filterToOrder
。
FilterComparator() { Step order = new Step(INITIAL_ORDER, ORDER_STEP); put(ChannelProcessingFilter.class, order.next()); put(ConcurrentSessionFilter.class, order.next()); put(WebAsyncManagerIntegrationFilter.class, order.next()); put(SecurityContextPersistenceFilter.class, order.next()); put(HeaderWriterFilter.class, order.next()); put(CorsFilter.class, order.next()); put(CsrfFilter.class, order.next()); put(LogoutFilter.class, order.next()); filterToOrder.put( "org.springframework.security.oauth3.client.web.OAuth3AuthorizationRequestRedirectFilter", order.next()); filterToOrder.put( "org.springframework.security.saml2.provider.service.servlet.filter.Saml2WebSsoAuthenticationRequestFilter", order.next()); put(X509AuthenticationFilter.class, order.next()); put(AbstractPreAuthenticatedProcessingFilter.class, order.next()); filterToOrder.put("org.springframework.security.cas.web.CasAuthenticationFilter", order.next()); filterToOrder.put( "org.springframework.security.oauth3.client.web.OAuth3LoginAuthenticationFilter", order.next()); filterToOrder.put( "org.springframework.security.saml2.provider.service.servlet.filter.Saml2WebSsoAuthenticationFilter", order.next()); put(UsernamePasswordAuthenticationFilter.class, order.next()); put(ConcurrentSessionFilter.class, order.next()); filterToOrder.put( "org.springframework.security.openid.OpenIDAuthenticationFilter", order.next()); put(DefaultLoginPageGeneratingFilter.class, order.next()); put(DefaultLogoutPageGeneratingFilter.class, order.next()); put(ConcurrentSessionFilter.class, order.next()); put(DigestAuthenticationFilter.class, order.next()); filterToOrder.put( "org.springframework.security.oauth3.server.resource.web.BearerTokenAuthenticationFilter", order.next()); put(BasicAuthenticationFilter.class, order.next()); put(RequestCacheAwareFilter.class, order.next()); put(SecurityContextHolderAwareRequestFilter.class, order.next()); put(JaasApiIntegrationFilter.class, order.next()); put(RememberMeAuthenticationFilter.class, order.next()); put(AnonymousAuthenticationFilter.class, order.next()); filterToOrder.put( "org.springframework.security.oauth3.client.web.OAuth3AuthorizationCodeGrantFilter", order.next()); put(SessionManagementFilter.class, order.next()); put(ExceptionTranslationFilter.class, order.next()); put(FilterSecurityInterceptor.class, order.next()); put(SwitchUserFilter.class, order.next()); }
網(wǎng)站欄目:SpringSecurity內(nèi)置Filter的介紹-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article36/epepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、自適應(yīng)網(wǎng)站、網(wǎng)站改版、軟件開發(fā)、營銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容