2016-01-20 55 views
1

我已經配置了一個自定義的Pre Auth過濾器,它可以延伸到AbstractPreAuthenticatedProcessingFilterSpring Security 3自定義過濾器和URL模式

根據我的理解,我可以指定哪些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",我認爲訪問時,這就不叫過濾器「本地主機:8080 /登錄」爲例。但是,它仍在調用過濾器。

該過濾器似乎有一些全局設置,它被稱爲每個請求。我使用Spring Boot,因此我沒有web.xml文件或任何自定義servlet配置。

基本上,我希望篩選器可以爲除'/ login'以外的每個URL都工作。

+0

您的登錄頁面是否有擴展名?在這種情況下使用模式/登錄* – hasnae

+0

這只是一個簡單的html文件,我試過這個,但不幸的是沒有什麼區別。 –

回答

0

下面的語句是從春天DOC引用:

要使用表達式來保護單獨的URL,你首先需要 設置在<http>元素使用表達式屬性爲true。 然後,Spring Security將期望<intercept-url>元素的訪問屬性包含Spring EL表達式。該 表達式的值應該爲一個布爾值,定義訪問 是否應該被允許或不允許

所以,你應該刪除使用表達式=「true」和使用模式=「/ *登錄」。

相關問題