登录我的Java web应用程序时,我';m直接指向登录表单使用的CSS,如何修复此问题?

登录我的Java web应用程序时,我';m直接指向登录表单使用的CSS,如何修复此问题?,java,security,web,web.xml,security-constraint,Java,Security,Web,Web.xml,Security Constraint,我有一个Java web应用程序,它由各种servlet和jsp组成——例如:控制器servlet/controller?abc=123&xyz=567,一些其他servlet/showDocument?docid=55,以及一些直接访问jsp的方法,/userDetails.jsp 我已经启用了web安全以阻止访问所有(如下所示),并且我有一个链接到css文件/styles.css的login.jsp页面 当我访问任何URL时,我被重定向到login.jsp页面 问题是: (1) 登录页面上没

我有一个Java web应用程序,它由各种servlet和jsp组成——例如:控制器servlet
/controller?abc=123&xyz=567
,一些其他servlet
/showDocument?docid=55
,以及一些直接访问jsp的方法,
/userDetails.jsp

我已经启用了web安全以阻止访问所有(如下所示),并且我有一个链接到css文件
/styles.css
login.jsp
页面

当我访问任何URL时,我被重定向到login.jsp页面

问题是:

(1) 登录页面上没有使用CSS样式,可能是因为
styles.CSS
被认为是受保护的资源,我还没有登录

(2) 使用用户名和密码成功登录后,我将被引导到style.css文件(该文件在浏览器中显示为纯文本)。我猜这是因为指向css文件的链接被认为是最近请求的受保护资源,所以它假设这就是我想要去的地方

如果我将CSS内容复制并粘贴到JSP中,这两个问题都会消失,但是我将CSS放在两个地方,style.CSS和login.JSP

我该如何解决这个问题?是否有一种方法可以让我“白名单”*.css文件不受保护。我是否必须为要保护的特定类型定义不同的安全约束

以下是my 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>

非常感谢您的帮助


Rob

您可以在保护所有内容后禁用css和图像的安全性

<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>
<security-constraint><!--Exclude css and images here -->
   <web-resource-collection>
      <web-resource-name>Exclude from Security</web-resource-name>
      <url-pattern>/images/*</url-pattern><!-- No security for images -->
      <url-pattern>/css/*</url-pattern><!-- No security for css -->
   </web-resource-collection>
</security-constraint>

名称
受限制的
/*
得到
邮递
应用程序用户
没有一个
从安全中排除
/图像/*
/css/*