2017-06-01 59 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属于,因为他们都是相对于上下文根。