При входе в мое веб-приложение на Java меня перенаправляют на CSS, используемый в форме входа, как это исправить?
У меня есть веб-приложение на Java, которое состоит из множества сервлетов и JSP - примеры: сервлет контроллера /controller?abc=123&xyz=567
некоторые другие сервлеты /showDocument?docid=55
и некоторый прямой доступ к JSP, /userDetails.jsp
,
Я включил веб-безопасность, чтобы предотвратить доступ ко всем (показано ниже), и у меня есть login.jsp
страница, которая ссылается на файл CSS /styles.css
,
Когда я получаю доступ к любому URL, я перенаправляюсь на страницу login.jsp.
Проблемы:
(1) CSS-стили не используются на странице входа в систему, вероятно потому, что styles.css
считается защищенным ресурсом, и я еще не вошел в систему.
(2) После успешного входа в систему с именем пользователя и паролем меня перенаправляют в файл style.css (который отображается в браузере в виде обычного текста). Я предполагаю, что это потому, что ССЫЛКА на файл css считается самым последним запрошенным защищенным ресурсом, поэтому предполагается, что именно туда я и хочу перейти.
Если я скопирую и вставлю содержимое 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>
Вот как я ссылаюсь на CSS в моих JSP:
<head>
<LINK REL=StyleSheet HREF="styles.css" TYPE="text/css" MEDIA="screen" />
</head>
Любая помощь очень ценится!
обкрадывать
1 ответ
Вы можете отключить безопасность для 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>