在web.xml security-constraint中配置异常

时间:2017-10-13 11:34:57

标签: java tomcat servlets web.xml security-constraint

我知道已有其他类似我怀疑的帖子,但问题是我无法解决问题。 我有一个必须使用名称" passport.jsp"映射的servlet,因为外部应用程序(无法更改呼叫)通过URL http://myipserver:portserver/nameApplication/passport.jsp?xxx发出请求 我的web.xml就在这里:

<servlet-mapping>
    <servlet-name>PortalServlet</servlet-name>
    <url-pattern>/passport.jsp</url-pattern>
</servlet-mapping>

问题是我的安全约束的映射会覆盖servlet passport.jsp的定义,因为它映射了&#34; * .jsp&#34;。

<security-constraint>
    <display-name>EsconderJSP</display-name>
    <web-resource-collection>
        <web-resource-name>JSP</web-resource-name>
        <description/>
        <url-pattern>*.jsp</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>jsps</role-name>
    </auth-constraint>
</security-constraint>

有谁知道如何解决这个问题?您可以添加servlet&#34; /passport.jsp"作为例外。

感谢您的关注。

2 个答案:

答案 0 :(得分:0)

您可以在其上方添加另一个没有保护的安全约束

<security-constraint>
    <web-resource-collection>
        <url-pattern>/passport.jsp</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>

或者您可以将应用程序请求更改为以不同的方式保护。这将使护照申请不受保护。

http://myipserver:portserver/nameApplication/otherRequests/foobar.jsp

http://myipserver:portserver/nameApplication/passport.jsp

然后只保护/otherRequests/*

<url-pattern>/otherRequests/*</url-pattern>

答案 1 :(得分:0)

我解决了在web.xml中添加新标记(其他安全约束)

<security-constraint>
    <web-resource-collection>
        <web-resource-name>free pages</web-resource-name>
        <url-pattern>/passport.jsp</url-pattern>
    </web-resource-collection>
</security-constraint>

安,它的工作。感谢