2011-09-12 35 views
19

下面是春季安全的PetClinic示例部分:access =「permitAll」和filters =「none」之間的區別?

<http use-expressions="true"> 
    <intercept-url pattern="/" access="permitAll"/> 
    <intercept-url pattern="/static/**" filters="none" /> 
    <intercept-url pattern="/**" access="isAuthenticated()" /> 
    <form-login /> 
    <logout /> 
</http> 

是什麼訪問之間=「permitAll」和過濾器=「無」的差別?

地址:http://static.springsource.org/spring-security/site/petclinic-tutorial.html

回答

28

不同的是,filters = "none"禁用春季安全過濾器爲指定的URL,而access = "permitAll"配置授權,而無需禁用過濾器。

實際上,filters = "none"可能會導致問題,因爲它背後的資源需要Spring Security的某些功能。例如,您不能將其用於在提交時執行程序化登錄的用戶註冊頁面(User Granted Authorities are always : ROLE_ANONYMOUS?)。

+0

因此,即使對於安全應用程序的css和js文件,我應該使用'access =「permitAll」'而不是'filters =「none」'? – kamaci

+0

我也評論了你的鏈接。 – kamaci

+0

@kamaci:據我所知,'filters =「none」'不會對靜態資源造成任何問題。但是,如果您將其用於動態資源,則需要牢記差異。 – axtavt