返回“403 Forbidden”时如何处理对本地 js/css 文件的 web.xml 授权?

How to handle web.xml authorization to local js/css files when returning '403 Forbidden'?

我有一个只有获得授权的人才能进入的网站。如果有人没有授权,我的 web.xml 会将他们重定向到 403 错误页面。

但是,我的应用程序和错误页面都使用了一些外部 js 和 css 文件(例如 bootstrap)。从逻辑上讲,403 错误页面无法访问这些 js/css 文件,因为除了错误页面 html.

之外的所有内容都被禁止访问。

我该如何巧妙地解决这个问题?我应该公开我的库文件夹吗?如果是这样,我如何覆盖特定文件夹的安全规则?

我查看了 documentation here 但我没有看到提到这种情况。我想我必须向“/libraries”添加一个安全约束,并以某种方式覆盖 HTTP 方法 GET 的必要角色?

我的 web.xml 中可能相关的部分:

    <error-page>
        <error-code>403</error-code>
        <location>/errorPages/forbidden.jsp</location>
    </error-page>

  <security-role>
    <role-name>myRole</role-name>
  </security-role>

  <security-constraint>
    <display-name>MySecurityConstraint</display-name>
    <web-resource-collection>
      <web-resource-name>WebResource</web-resource-name>
      <url-pattern>/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>DELETE</http-method>
      <http-method>PUT</http-method>
      <http-method>HEAD</http-method>
      <http-method>OPTIONS</http-method>
      <http-method>POST</http-method>     
    </web-resource-collection>
    <auth-constraint>
      <role-name>myRole</role-name>
    </auth-constraint>
    <user-data-constraint>
      <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
  </security-constraint>

您可以简单地添加一个带有详细路径且没有身份验证约束的额外安全约束

<security-constraint>
    <display-name>NoSecurityConstraint</display-name>
    <web-resource-collection>
      <web-resource-name>WebResource</web-resource-name>
      <url-pattern>/library/*</url-pattern>
      <http-method>GET</http-method>
      <http-method>DELETE</http-method>
      <http-method>PUT</http-method>
      <http-method>HEAD</http-method>
      <http-method>OPTIONS</http-method>
      <http-method>POST</http-method>     
    </web-resource-collection>
  </security-constraint>

希望这能解决您的问题