2013-04-13 72 views
0

親愛的同胞Sping'lers,所有網站重定向到登錄頁面

我偶然發現了一個在春天登錄攔截url的問題。

我只是想所有頁面重定向到我的登錄頁面,如果不記錄下來。

這是我使用的安全上下文。但是,這段代碼不允許我訪問任何頁面:

<security:http auto-config="true"> 
    <security:form-login login-page="/login" default-target-url="/welcome" 
     authentication-failure-url="/loginfailed" /> 
    <security:logout logout-success-url="/logout" /> 
    <security:intercept-url pattern="/login" access="permitAll" /> 
    <security:intercept-url pattern="/**" access="hasRole(ROLE_USER)" /> 
</security:http> 

感謝您的幫助。

Lomu


根據jonnieM's post改變了我的配置:

它現在

<security:http auto-config="true"> 
    <security:intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" /> 
    <security:intercept-url pattern="/**" access="ROLE_USER" /> 
    <security:form-login login-page="/login" default-target-url="/welcome" 
     authentication-failure-url="/loginfailed" /> 
    <security:logout logout-success-url="/logout" /> 
</security:http> 

因此,我認爲 「IS_AUTHENTICATED_ANONYMOUSLY」 的伎倆:)

乾杯Lomu

回答

4

您應該應用<http use-expressions="true">設置,否則<intercept-url>access屬性中的值將不會被解釋爲Spring EL快捷鍵。

+0

喜zagyi, 如果我設置使用表達式=「真」我需要改變配置如下的 '<安全:HTTP使用表達式=「真正的」自動配置=「真」> \t \t \t \t \t \t <安全:表單登錄的登錄頁= 「/登錄」 默認目標-URL = 「/歡迎」 \t \t \t認證失敗-URL = 「/ loginfailed」/> \t \t <安全性:註銷註銷成功的url =「/註銷」/> \t' –

+0

爲什麼?你原來的配置有什麼問題('permitall'分配給'/ login')?我認爲它應該與'use-expressions =「true」'一起工作。 – zagyi

+0

我檢查了它。 「permitAll」而不是isAnonymous()也在工作。你是對的。 –