1

我知道已经有其他类似我的疑问的帖子,但问题是我无法解决问题。我有一个必须用名称“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 的定义,因为映射的是“*.jsp”。

<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“/passport.jsp”添加为例外。

感谢您的关注。

4

2 回答 2

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>
于 2017-10-13T11:43:47.030 回答
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>

安它的工作。谢谢

于 2017-10-13T12:06:46.920 回答