2012-07-04 67 views
0

我需要基於URI的命名空間來實現授權。 例如,本地主機:8080 /普通/ * 將所有類型的用戶和訪問 本地主機:8080 /管理/ *將是唯一的管理員用戶訪問。基於命名空間或基於URI的彈簧安全

我已經使用UsernamePasswordAuthenticationFilter登錄的東西,但我不知道如何檢查每個請求的授權。

任何人都可以指導我如何使用spring security來實現這種授權嗎?

謝謝&此致敬禮。

回答

0

可以使用

<intercept-url> element 

截距-url元素可以用來定義針對被使用螞蟻路徑風格的語法的傳入請求的網址匹配的圖形實現這一點。

例如使用Spring 3.0 +使用規劃環境地政司:

<http auto-config="true" use-expressions="true"> 
    <intercept-url pattern="/common/*" access="permitAll" /> 
    <intercept-url pattern="/registered/*" access="hasAnyRole('ROLE_USER,ROLE_ADMIN')" /> 
    <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" /> 
</http> 

如果你沒有規劃環境地政司的支持,然後使用這樣的:

<http auto-config='true'> 
    <intercept-url pattern="/common/*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <intercept-url pattern="/registered/*" access="ROLE_USER,ROLE_ADMIN" /> 
    <intercept-url pattern="/admin/*" access="ROLE_ADMIN" /> 
</http> 

Documentation

更新 - 如果你正在JSP/JSP中進行轉發,你需要在http元素上設置once-per-request =「false」。

參見:

+0

感謝您的答覆。其實我已經嘗試過相同的代碼,但是這種授權只發生在登錄(身份驗證)時,稍後它不會針對每個請求發生。 – SmartSolution

+0

所以我認爲你正在JSP/JSF頁面中進行轉發。我已經更新了答案! – Ravi