我有一个 Java Web 应用程序,它由各种 servlet 和 JSP 组成——例如:控制器 servlet /controller?abc=123&xyz=567
、其他一些 servlet /showDocument?docid=55
,以及一些对 JSP 的直接访问/userDetails.jsp
。
我启用了网络安全以阻止对所有人的访问(如下所示),并且我有一个login.jsp
链接到 css 文件的页面/styles.css
。
当我访问任何 URL 时,我被重定向到 login.jsp 页面。
问题是:
(1) 登录页面上没有使用 CSS 样式,可能是因为它styles.css
被认为是受保护的资源,而我还没有登录。
(2) 使用用户名和密码成功登录后,我被定向到 style.css 文件(在浏览器中显示为纯文本)。我猜这是因为指向 css 文件的 LINK 被认为是最近请求的受保护资源,所以它假设这就是我想要去的地方。
如果我将 CSS 内容复制并粘贴到我的 JSP 中,这两个问题都会消失,但是我在两个地方都有 CSS,style.css 和 login.jsp。
我该如何解决?有没有办法让我将 *.css 文件列入“白名单”,以免它们受到保护。我是否必须为要保护的特定类型定义不同的安全约束?
这是我的 web.xml 中的当前安全约束:
<security-constraint>
<display-name>name</display-name>
<web-resource-collection>
<web-resource-name>Restricted</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>APP_USER</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
这就是我在我的 JSP 中链接到 CSS 的方式:
<head>
<LINK REL=StyleSheet HREF="styles.css" TYPE="text/css" MEDIA="screen" />
</head>
任何帮助是极大的赞赏!
抢