簡體   English   中英

Spring Security 3自定義過濾器和URL模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM