2017-06-01 57 views
0

我定義了兩個角色 - 在我的web.xml用戶url-pattern的安全約束不工作

<security-role> 
    <role-name>User</role-name> 
    </security-role> 

和管理員

<security-role> 
     <role-name>Admin</role-name> 
    </security-role> 

問題1 -

我希望應用程序被用戶訪問僅如果他們有這兩種角色(也有可能在未來增加更多的角色,所以我沒有用一個*角色模式)

<security-constraint id ="FullAccess"> 
    <web-resource-collection> 
     <web-resource-name>CPDC Application</web-resource-name> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Admin</role-name> 
     <role-name>User</role-name> 
    </auth-constraint> 
    </security-constraint> 

如果存在兩個角色,則這不起作用。刪除其中一個角色會導致其按預期工作。如果我希望兩個角色能夠訪問此資源,該怎麼辦?

問題2 -

現在,我也只希望用戶與管理員角色就能下來訪問所有資源從adminresource/

<security-constraint id="AdminAccess"> 
    <web-resource-collection> 
    <web-resource-name>Admin resources</web-resource-name> 
    <url-pattern>/appname/servlet.svc/adminresource/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>Admin</role-name> 
    </auth-constraint> 
</security-constraint> 

此限制不工作,甚至有人用戶角色能夠訪問網址的形式https://localhost:8080/appname/servlet.svc/adminresrouce/test

有人可以幫忙嗎?

+2

'appname'是應用程序的上下文根嗎?如果是這樣,它不屬於'url-pattern' –

+0

看起來就是這個問題。你能把它作爲答案嗎? – SeeObjective

回答

2

這看起來像你已經包括了上下文根應用程序的/appname

<url-pattern>/appname/servlet.svc/adminresource/*</url-pattern> 

這不以任何url-pattern屬於,因爲他們都是相對於上下文根。