java - 安全约束的 url 模式不起作用

标签 java jakarta-ee web.xml

我定义了两个角色 - 用户

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

现在,我还希望只有具有管理员角色的用户才能访问 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 形式的 URL

有人可以帮忙吗?

最佳答案

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

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

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

关于java - 安全约束的 url 模式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300062/

相关文章:

java - 如何阻止 jackson 在反序列化时更改日期时间

javascript - 在 eclipse 中创建一个空白项目或使 Intellij 像 eclipse 一样自动完成

java - IceFaces 将其 CSS 和 JavaScript 资源放在每个页面上,无论它们是否使用 Ice 组件。有办法阻止这个吗?

java - @WebServlet 注解 web.xml 欢迎文件

java.io.FileNotFoundException : config. 属性

java - JPA - merge()重复记录问题

java - Jenkins fresh deploy 使用容器部署插件工作,但如果重新部署则失败

java - 对于值为 null 的变量,如何强制 Weblogic 在 jsp 文件中打印 "null"而不是空字符串 ""?

tomcat - 服务器启动时未初始化类

spring-mvc - Tomcat7 部署失败 : org. apache.catalina.LifecycleException : Failed to start component/w org. springframework.web.servlet.DispatcherServlet