2013-06-03 58 views
0

我在我的struts2應用程序上運用spring security我可以使用攔截器url來提供對主要url的訪問,但不提供對其子集的訪問。基於角色的身份驗證不起作用

比如我需要給訪問客戶角色的用戶只能查看書籍,所以我用 以下

<http auto-config="true" access-denied-page="/not.jsp" use-expressions="true"> 
     .... 
    <intercept-url pattern="/Books/view*" access="hasRole('ROLE_CUSTOMER')"/> 

所以我認爲用戶應該能夠訪問到本地主機:8888 /書籍/view.action但他們不這樣做,並重定向他們not.jsp頁面(拒絕訪問頁)

我已經嘗試了所有以下,但既不工作

<intercept-url pattern="/Books/view.action" access="hasRole('ROLE_CUSTOMER')"/> 
    <intercept-url pattern="/Books/view**" access="hasRole('ROLE_CUSTOMER')"/> 
    <intercept-url pattern="/Books/view.action*" access="hasRole('ROLE_CUSTOMER')"/> 

唯一有效的是下面的一個,它允許訪問我不想要的所有操作(編輯,刪除和查看)。

 <intercept-url pattern="/Books/*" access="hasRole('ROLE_CUSTOMER')" /> 

回答

1

檢查以前的映射。不要忘記,如果您在達到此行之前爲相同網址提供其他角色訪問權限,則會拒絕ROLE_CUSTOMER訪問該地址,因此請使用其他表達式訪問所有需要訪問該網址的角色一旦。

0

正則表達式「*」表示任何短語。所以我能想到的是,你沒有任何URL模式/圖書/視圖,或者在該單詞之後具有更多字符。另外,正則表達式「/ Books/view * 」和「/ Books/view」沒有任何區別。他們是一樣的。

但是「/ Books/*」這個URL模式與其他模式不同。它可以匹配任何URL模式請求資源/圖書/級別。

我可以說的是重新檢查你的網址格式。無法理解他們。

相關問題