gpt4 book ai didi

java - url 模式和通配符

转载 作者:搜寻专家 更新时间:2023-11-01 01:11:46 26 4
gpt4 key购买 nike

在为 J2EE 应用程序中的 Web 模块角色配置安全约束时,我遇到了以下问题:

应用:

提供一个名为 customersServlet 的 servlet,它在 URL 中接收两个参数:

  • 表示操作(INS、UPD、DLT 和 DSP)的字符串。
  • 用于识别将对其执行操作的客户的标识号。

例如:url /servlet/cusotmersServlet?UPD,5用于更新客户5号数据,url /servlet/customersServlet?DLT,8是用于删除 8 号客户。

问题:

如果我使用这个安全约束,servlet 只能由指定的角色访问,这是可以的:

<security-constraint>
<web-resource-collection>
<web-resource-name>...</web-resource-name>
<url-pattern>/servlet/clientsServlet*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>clientAdmin</role-name>
</auth-constraint>
</security-constraint>

但我想将插入客户的能力限制在名为 clientAdmin 的角色中。

我已经尝试了几种 url 模式,但没有一种能如我所愿地工作(它们都允许每个角色使用任何参数访问 servlet):

<url-pattern>/servlet/clientsServlet?INS,*</url-pattern>
<url-pattern>/servlet/clientsServlet?INS/*</url-pattern>
...

如何在url-pattern标签中使用通配符*

注意:无法更改应用程序,因此我需要一个仅涉及部署描述符的解决方案。

最佳答案

<url-pattern> tag 只允许非常有限的通配符子集。这可能不是您在其他情况下习惯的情况,其中 *可以在任何位置使用。您可以在此处下载 Servlet 规范:

http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html

该文档的 SRV.11.2 节描述了如何解释这些 URL 模式。特别是 * 在这里表示“零个或多个任意字符”。

关于java - url 模式和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com