我正在测试某些网址的安全限制。我觉得 url pattern 表现得很奇怪。我希望在ServletSecurityTest(webapproot)/
之后的访问受限制。但是,在websphere中部署war文件后,即使ServletSecurityTest(webapproot)
本身也受到限制。为什么?
例如:
我希望限制此http//ravi-pc:9080/ServletSecurityTest/testSecurity.do
。这个没关系。但即使http//ravi-pc:9080/ServletSecurityTest
也受到限制。为什么?
有什么想法吗?
的web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>Servlet Security Resources</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Administrator</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>Administrator</role-name>
</security-role>
的Servlet
@WebServlet(name="SecurityTestServlet", urlPatterns={"/testSecurity.do"})
public class SecurityTestServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().write("Only Administrators can see this...");
}
}
答案 0 :(得分:1)
<url-pattern>/*</url-pattern>
表示/
之后的所有网址。
/testSecurity.do and /testSecurity
都属于您指定的模式。
尝试<url-pattern>/*.do</url-pattern>
并查看。
答案 1 :(得分:0)
通过提及<url-pattern>/*</url-pattern>
,您确保根文件夹也是安全的。
我遇到了类似的问题,并解决了我的更改文件夹结构,如下所示。
<security-constraint>
<web-resource-collection>
<web-resource-name>Servlet Security Resources</web-resource-name>
<url-pattern>/ServletSecurityTest/*</url-pattern>
<url-pattern>/auth/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Administrator</role-name>
</auth-constraint>
所有身份验证内容都将移至auth文件夹或创建基于角色的文件夹,并提供对这些文件夹的不同访问权限。