日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring security 核心过滤器

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring security 核心过滤器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

#14. Core Security Filter 有很多關鍵過濾器在spring 安全的項目中總是使用,所以我們可以查看這些支持的類和接口.想要全面了解,請查看javadoc.

##14.1 FilterSecurityInterceptor

一個典型的配置如下

<bean id="filterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor"> <property name="authenticationManager" ref="authenticationManager"/> <property name="accessDecisionManager" ref="accessDecisionManager" /> <property name="securityMetadataSource"><security:filter-security-metadata-source><security:intercept-url pattern="/secure/super/**" access="ROLE_WE_DONT_HAVE"/><security:intercept-url pattern="/secure/**" access="ROLE_SUPERVISOR,ROLE_TELLER"> </property>

FilterSecurityInterceptor主要保護http資源的安全.它要求一個AuthenticationManager和一個AccessDecisionManager的引用.它也提供了一些配置屬性來適應不同的http請求.

FilterSecurityInterceptor可以通過兩種方式來配置屬性.第一個,如上所述,使用<filter-security-metadata-source>命名空間.它與<http>空間很像,但它的子元素只有pattern,access元素.逗號用來劃分不同http url的配置元素.第二選項是寫自己的SecurityMetadataSource,但是這個超出了文本文件的內容.無論何種方法,SecurityMetadataSource用來返回關于單個http url的List<ConfigAttribute>.

filter-security-metadata-source的匹配表達式可以通過request-matcher來設置.默認是ant匹配.

<bean id="filterInvocationInterceptor"class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor"> <property name="authenticationManager" ref="authenticationManager"/> <property name="accessDecisionManager" ref="accessDecisionManager"/> <property name="runAsManager" ref="runAsManager"/> <property name="securityMetadataSource"><security:filter-security-metadata-source request-matcher="regex"><security:intercept-url pattern="\A/secure/super/.*\Z" access="ROLE_WE_DONT_HAVE"/><security:intercept-url pattern="\A/secure/.*\" access="ROLE_SUPERVISOR,ROLE_TELLER"/></security:filter-security-metadata-source> </property> </bean>

模式按定義的順序執行.重要的是指定一些具體模式的順序在一些模糊模式之前.在我們的例子中,具體路徑"/secure/super"的模式在"/secure/"模式之前.如果反轉順序,那么/secure/模式總會匹配,而/secure/super模式不會執行.

14.2 ExceptionTranslationFilter

ExceptionTranslationFilter是基于FilterSecurityInterceptor的棧中的.它本身不參與安全攔截,負責處理安全攔截器拋出的異常,并提供合適的http請求.

<bean id="exceptionTranslationFilter" class="org.springframework.security.web.access.ExceptionTranslationFilter"><property name="authenticationEntryPoint" ref="authenticationEntryPoint"/> <property name="accessDeniedHandler" ref="accessDeniedHandler"/> <bean/> <bean id="authenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint"> <property name="loginFormUrl" value="/login.jsp"/> </bean> <bean id="accessDeniedHandler"class="org.springframework.security.web.access.AccessDeniedHandlerImpl"> <property name="errorPage" value="/accessDenied.htm"/>

###14.2.1 AuthenticationEntryPoint

當你訪問一個收保護的資源而沒有認證時,AuthenticationEntryPoint就會被調用.此時你希望調用的是LoginUrlAuthenticationEntryPoint,它會重定向到不同的url中.

###14.2.2 AccessDeniedHandler

有時已認證的用戶會訪問被保護的資源會失敗.例如,一個user的用戶訪問admin的資源,有時是直接用html連接,有時是restful的參數問題.通常需要在web層驗證,或在服務層的接口固定調用許可.

如果一個AccessDeniedException被拋出,如果用戶已被認證,那么ExceptiontranslationFilter會啟用第二種方案,AccessDeniedHandler.一般它會返回403的狀態碼,另外你可以指定一個錯誤頁面.它可以是簡單的"access denied"頁面,也可以是jsp,還可以實現自己的接口.

你也可以實現一個自定義的AccessDeniedHandler.

###14.2.3 SavedRequest and the RequestCache Interface 異常轉化器的另一個職責是在調用AuthenticationEntryPoint之前保存當前請求.當用戶被認證之后,它允許請求重置.典型的例子,如表單登陸.一般它可以通過SavedRequestAwareAuthenticationSuccessHandler進行重定向.

RequestCache的一個作用就是存儲和恢復HttpServletRequest實例.當HttpSessionRequestCache被使用時,它會在httpSession中存儲請求.RequestCacheFilter的工作就是從緩存中取出已保存的請求,并將它們重定向到原來的url中.

##14.3 SecurityContextPersistenceFilter 基本配置如下:

<bean id="securityContextPersistenceFilter" class="org.springframework.security.web.context.SecurityContextPersistenceFilter"/>

它的職責是存儲http請求之間的securityContext內容,并在請求完成之后清空SecurityContextHolder.如果不清空ThreadLocal,當它被容器線程池回收時,關于用戶的上下文信息就會一直儲存.這個線程可能會在以后的階段使用錯誤的認證信息繼續執行.

14.3.1 SecurityContextRepository

spring security 3.0,負載和存儲security上下文是由一個單獨的策略接口完成的:

public interface SecurityContextRepository{SecurityContext loadContext(HttpRequestResponseHolder requestResponseHodler);void saveContext(SecurityContext context,HttpServletRequest,request,HttpServletResponse response); }

HttpRequestResponseHolder,包含了到來的請求和返回信息,并替換他們.它返回的內容會通過攔截鏈.

其默認實現是HttpSessionSecurityContextRepository,它將security上下文作為httpSesion的一個屬性來存儲.重要屬性,allowSessionCreation,默認值是true.它允許類在需要存儲認證用戶上下文時來創建一個session.(只有當認證發生,且上下文內容改變才創建).如果你不想創建session,你需要將屬性設為false.

<bean id="securityContextPersistenceFilter"class="org.springframework.security.web.context.SecurityContextPersistenceFilter"> <property name='securityContextRepository'><bean class='org.springframework.security.web.context.HttpSessionSecurityContextRepository'><property name='allowSessionCreation' value='false' /></bean> </property> </bean>

另外,你也可使用一個NullSecurityContextRepository的實例,一個空的對象實現.這樣會阻止安全上下文存儲.即使session已經存在. ##14.4 UsernamePasswordAuthenticationFilter form-login元素的配置,有三個方面需要配置

  • 在loginUrlAuthenticationEntryPoint配置登陸頁的url.就像之前一樣,并在ExceptionTranslationFilter中設置

  • 實現登陸頁(使用 jsp或mvc控制器)

  • 在應用上下文中配置UsernamePasswordAuthenticationFilter的實例

  • 在你的攔截器代理中添加攔截器bean(認真排序)

登陸表單包含username和password兩個字段,默認路徑是URl.基本的攔截器配置如下:

<bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"> <property name="authenticationManager" ref="authenticationManager"/> </bean>

###14.4.1 認證成功或失敗的流向

成功或失敗都是有AuthenticationSuccessHandler或AuthenticationFailureHandler策略接口分別決定的.現在有SimpleUrlAuthenticationSuccessHandler,SaveRequestAwareAuthenticationSuccessHandler,SimpleUrlAuthenticationFailureHandler,ExceptionMappingAuthenticationFailureHandler and DelegatingAuthenticationFailureHandler.可以查看文檔了解更多.

如果認證成功,則AuthenticationSuccessHandler會調用,并重定向到合適的目的地.默認是使用SavedRequestAwareAuthenticationSuccessHandler,登陸成功后會重定向到原始目的地.

轉載于:https://my.oschina.net/u/1590027/blog/912736

總結

以上是生活随笔為你收集整理的spring security 核心过滤器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲三级大片 | 自拍偷拍视频网站 | 黑人与亚洲人色ⅹvideos | 亚洲欧美中文日韩在线 | 91久久精品国产91久久性色tv | 中文字幕在线播放不卡 | 久草资源网 | 四川话毛片少妇免费看 | 朝桐光av一区二区三区 | 天堂av在线网 | 亚洲天堂男人网 | 亚洲国产日韩欧美一区二区三区 | 在线播放毛片 | 不卡一区二区三区四区 | 欧美男人天堂 | 超碰下载页面 | 91亚洲天堂 | 老司机深夜免费福利 | 久久天堂网 | 小色哥网站 | 日本少妇bbb | 亚州av| 又大又粗又爽18禁免费看 | 好吊操精品视频 | 国产日产亚洲精品 | 日本黄色大片免费 | 亚洲人高潮女人毛茸茸 | 亚洲91色 | 亚洲又粗又长 | 无码人妻精品一区二区三应用大全 | 欧美污污视频 | 久久成人在线 | 日韩人妻一区二区三区 | 九色蝌蚪91| 久久亚洲国产精品 | 亚洲日本欧美精品 | 青青草久久爱 | 黄色免费网站观看 | 国产精品欧美大片 | 欧美日韩精品在线 | 欧美乱大交xxxxx潮喷 | 色撸撸在线观看 | 北条麻妃一区二区三区在线观看 | 九九九九九伊人 | 欧美裸体xxx | 夜久久久| 久久香蕉影院 | 久久亚洲av成人无码国产电影 | 久操福利 | 国产日比视频 | 欧美xxxxx视频| 欧美日韩一级大片 | 国产成人麻豆精品午夜在线 | 亚洲成人一区在线观看 | 操碰97| 欧美精品自拍 | 好吊妞视频在线观看 | 欧美毛片网站 | 亚洲精品国产乱伦 | 日韩精品一区二区免费视频 | 欧美男人的天堂 | 欧美男人天堂 | www.婷婷| 日韩av无码一区二区三区 | av电影在线网站 | 综合色在线 | 日本在线不卡一区 | 日本一区二区高清视频 | 欧美日韩一区二区三区 | 日本在线高清视频 | 天天综合人人 | 熟女肥臀白浆大屁股一区二区 | 国产视频一区二区三区在线 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 97在线观视频免费观看 | 北条麻妃在线一区二区 | 亚洲精品乱码久久久久久久久久久久 | 欧美三级电影在线观看 | 欧美精品五区 | 日韩欧美黄色 | 中文字幕1 | 国产三区在线成人av | 韩国三级视频 | 97人妻精品一区二区三区动漫 | 亚洲成人一 | 福利社av| 亚洲欧美激情另类 | 精品少妇白浆小泬60P | 久久久久久久亚洲精品 | 99自拍视频在线观看 | 亚洲精品乱码久久久久久麻豆不卡 | 国产激情网址 | 中文字幕不卡在线 | 亚洲一区二区视频在线观看 | 亚洲av无码精品一区二区 | 台湾佬美性中文娱乐 | 日日夜夜欧美 | 黄色一区二区三区四区 | 亚洲一区中文字幕永久在线 |