Java EE安全模型Web集合:差异URL模式“/”和“/ *”

时间:2015-03-10 19:46:15

标签: java security java-ee servlets url-pattern

A" /"来到servlet映射意味着默认的servlet。 如何解释嵌入web-resource-collection元素中的URL模式,如下所示:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>fixmyhome</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>

&#34; / *&#39 ;?此URL模式不是servlet映射,因为它标记为web-resource-collection。

我还注意到使用http://localhost:8081/fixmyhome/main.jsp同时使用两种网址格式&#34; /&#34;和&#34; / *&#34;给出了相同的结果 - 它给了我main.jsp页面。我想&#34; /&#34;可能不起作用,因为没有通配符。

4 个答案:

答案 0 :(得分:1)

<url-pattern>正在寻找Ant模式。可用的模式是?,*和**;它分别匹配1个字符,0个或更多字符以及0个或更多目录。

在您http://localhost:8081/fixmyhome/main.jsp的情况下,//*的工作方式相同,因为*不是要求他们成为角色的要求。

如果你的root中有一个资源目录,我想你的<url-pattern>看起来像这样: <url-pattern>/resources/**</url-pattern>,从而允许您访问资源目录的所有子目录。

这可能有助于提供更清晰的信息: https://ant.apache.org/manual/dirtasks.html

答案 1 :(得分:0)

根据this我会说通过写/你限制访问servlet,而写/ /你限制访问某个路径。所以基本上“/”和“/ *”是一样的。

答案 2 :(得分:0)

安全约束下的url模式不属于servlet的任何映射,而是正则表达式。使用安全性约束,您可以允许/限制具有给定URL模式的提及角色(在auth-constraint中)的用户。

答案 3 :(得分:0)

servlet规范(版本3)的第12.2节声明如下:

  
      
  • 以“/”字符开头并以“/ *”后缀结尾的字符串用于路径映射。
  •   
  • 以'*。'前缀开头的字符串用作扩展名映射。
  •   
  • 空字符串(“”)是一个特殊的URL模式,它完全映射到应用程序的上下文根,即表单的请求   http://host:port/contextroot/。在这种情况下,路径信息是'/'和   servlet路径和上下文路径是空字符串(“”)。
  •   
  • 仅包含'/'字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径为   是请求URI减去上下文路径,路径信息为空。

  •   
  • 所有其他字符串仅用于完全匹配

  •