【问题标题】:url-pattern for security-constraint not working安全约束的 url 模式不起作用
【发布时间】:2017-06-01 06:30:30
【问题描述】:

我已经定义了两个角色——用户

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

和管理员

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

在我的 web.xml 中。

问题 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 -

现在,我还希望只有具有 Admin 角色的用户能够访问来自 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 形式的网址

有人可以帮忙吗?

【问题讨论】:

  • appname 是您应用程序的上下文根吗?如果是这样,它不属于url-pattern
  • 看起来这就是问题所在。您可以将其发布为答案吗?

标签: java jakarta-ee web.xml


【解决方案1】:

这看起来您已经包含了应用程序的上下文根/appname

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

这不属于任何url-pattern,因为它们都是相对于上下文根的。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多