我知道已有其他类似我怀疑的帖子,但问题是我无法解决问题。 我有一个必须使用名称" 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"作为例外。
感谢您的关注。
答案 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>
安,它的工作。感谢