<security-constraint>
<web-resource-collection>
<web-resource-name>Common pages</web-resource-name>
<url-pattern>/test1.html</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>MY_GROUP</role-name>
</auth-constraint>
</security-constraint>正如预期的那样,在此约束下,页面/test1.html需要身份验证,而页/test2.html不需要身份验证。
<security-constraint>
<web-resource-collection>
<web-resource-name>Common pages</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>MY_GROUP</role-name>
</auth-constraint>
</security-constraint>正如预期的那样,在此约束下,所有页面都需要身份验证,包括/test2.html。
<security-constraint>
<web-resource-collection>
<web-resource-name>Common pages</web-resource-name>
<url-pattern>/</url-pattern>
<url-pattern>/test1.html</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>MY_GROUP</role-name>
</auth-constraint>
</security-constraint>有了这个约束,我希望页面/test1.html和/需要身份验证,但是页/test2.html不应该需要身份验证。
然而,事实证明,/test2.html也需要身份验证。
问题1.这正常吗?为甚麽这样呢?
问题2.在规范中,url模式"/“是否等同于"/*"?Java规范2.5:http://goo.gl/UxoPL
问题3.我如何知道根页"/“需要身份验证,而不是其他页面?
ps:我使用的是jboss 4.3。
发布于 2012-05-19 17:45:48
/是一种特殊的模式,它匹配的所有东西都是,而不是,任何更具体的servlet模式都是在同一个say应用程序中匹配的,比如/app/*、*.do等等。默认情况下,这是由servlet容器自己的默认servlet处理的,并且通常用于静态资源,如普通的HTML/CSS/JS/映像文件,不会为这些文件调用任何一个webapp自己的servlet。例如,Tomcat有用于此目的的DefaultServlet。
/*是一个过于通用的模式,它匹配everything,包括“默认servlet”请求。此URL模式通常只供过滤器使用,而不是由servlet使用。否则,您将不得不重新创建servlet容器自己的默认servlet来处理静态文件,比如普通的HTML/CSS/JS/映像文件。
至于您的具体功能需求,您需要为/指定一个欢迎文件
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>然后将安全约束URL模式放在/index.html上。
https://stackoverflow.com/questions/10435437
复制相似问题