[英]Spring Security 3 Custom Filter and URL Patterns
我已經配置了自定義的Pre Auth過濾器,該過濾器擴展了AbstractPreAuthenticatedProcessingFilter
。
根據我的理解,我可以指定哪些URL模式使用此過濾器,並指定我不想在其上使用任何過濾器或安全性的所有URL。
我正在使用Spring Security 3.2和XML配置,因此我認為類似的東西應該可以工作。
<security:http pattern="/login" use-expressions="true" security="none">
</security:http>
<security:http pattern="/home" use-expressions="true" auto-config="true"
entry-point-ref="http403EntryPoint">
<security:custom-filter position="PRE_AUTH_FILTER"
ref="openTokenFilter" />
<security:session-management
invalid-session-url="/login" />
<security:session-management>
<security:concurrency-control
max-sessions="1" error-if-maximum-exceeded="true" />
</security:session-management>
<security:access-denied-handler error-page="/login"/>
<security:logout delete-cookies="JSESSIONID"/>
</security:http>
通過為pattern="/login"
指定security="none"
,我認為例如在訪問“ localhost:8080 / login”時,它不會調用過濾器。 但是,它仍在調用過濾器。
過濾器似乎具有一些全局設置,每個請求都會在該全局設置中調用該過濾器。 我正在使用Spring Boot,所以我沒有web.xml文件或任何自定義servlet配置。
基本上,我希望過濾器對除“ / login”外的每個URL有效。
下列句子摘自spring doc:
要使用表達式保護單個URL,首先需要將
<http>
元素中的use-expressions屬性設置為true。 然后,Spring Security將期望<intercept-url>
元素的訪問屬性包含Spring EL表達式 。 表達式的計算結果應為布爾值,定義是否應允許訪問
因此,您應該刪除use-expressions =“ true”並使用pattern =“ / login *”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.