0

我正在测试某些 URL 的安全约束。我觉得url 模式表现得很奇怪。我希望访问限制之后发生的任何事情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>

小服务程序

@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...");

    }

}
4

2 回答 2

1

<url-pattern>/*</url-pattern>表示 .之后的所有 URL /

/testSecurity.do and /testSecurity两者都属于您指定的模式。

试试看<url-pattern>/*.do</url-pattern>

于 2013-04-29T04:02:08.600 回答
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 文件夹或创建基于角色的文件夹,并提供对这些文件夹的不同访问权限。

于 2013-04-29T06:53:03.333 回答