2012-10-15 111 views
0

我剛開始閱讀Spring Security 3.1,我想知道如何通過我的登錄頁面強制用戶進行身份驗證,然後才能訪問我係統上的任何頁面。在教程中,我看到了下面的代碼Spring Security Authenticated only only

<http use-e xpressions="true"> 
    <intercept-url pattern="/index.jsp" access="permitAll" /> 
    <intercept-url pattern="/secure/extreme/**" access="hasRole('supervisor')" /> 
    <intercept-url pattern="/secure/**" access="isAuthenticated()" /> 
    <intercept-url pattern="/listAccounts.html" access="isAuthenticated()" /> 
    <intercept-url pattern="/post.html" access="hasAnyRole('supervisor','teller')" /> 
    <intercept-url pattern="/**" access="denyAll" /> 
    <form-login /> 
</http> 

從上面的配置,我可以看到,我要保持URL模式的列表。有沒有一種方法可以簡化這一點:每個用戶在訪問任何其他頁面之前都必須通過「/ login」登錄?

編輯:

我已經編輯我的配置如下,其工作如我所料

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

回答

3

的URL規則進行檢查,以便從頂部至底部。第一個匹配的是使用的那個。

在這個例子中,最後一行

<intercept-url pattern="/**" access="denyAll" /> 

就是 「捕捉所有」 規則。它適用於與上面任何規則不匹配的所有請求(「/ **」)。

在目前的形式下,無論如何,它都拒絕所有人訪問。如果您將其更改爲

<intercept-url pattern="/**" access="isAuthenticated()" /> 

相反,它會需要進行驗證的所有頁面,除非另有規定,否則會造成春季安全性未授權的用戶重定向到登錄過程。

+0

我已更新我的帖子中的配置。謝謝你的幫助。 – abiieez