본문 바로가기
YC TECH ACADEMY/projects

[Spring/Spring Boot] Spring Security로 인해 CSS 적용 안될 때

by 주연이가 주연이다. 2023. 11. 27.
[문제사항]


http://localhost:8080/ 에서 background 이미지가 표시되지 않는데
http://localhost:8080/signup 에서 계정 만들고
http://localhost:8080/login 에서 로그인하고
http://localhost:8080/ 으로 다시 이동하면


background 이미지가 표시됨

spring security쪽 문제인거 같음.

해당 background 이미지파일은 static/assets/img/bg-masthead.jpg 이고
static/css/styles.css 에 적용되어 있음.

 

 

[문제해결]

 

security 에서 css 가 serving 되고 있는 경로를 검증 제외해야 함.

config.SecurityConfig.java 에서

에서 .anyRequest() 추가


[참고]

https://velog.io/@crow/spring-boot-security-css-js-img

 

 


 

 

[문제사항]


http://localhost:8080/ 에서 background 이미지가 표시가 되나

http://localhost:8080/schedule 로 이동 시 로그인 페이지가 떠야되는데 (권한과 인가가 있어야 하는데) 그냥 이동 되어 버림.

.anyRequest()가 문제.

anyRequest()는 권한이나 경로에 대한 특정한 제약을 설정하지 않고, 그냥 "어떤 요청"에 대한 일반적인 보안 규칙을 정의

 

 

 

[문제해결]

 

원래대로 롤백.

PathRequest.toStaticResources().atCommonLocations()
: static 자원 요청에 대해 Spring Security가 무시하도록 설정함.

이렇게 함으로써 static 자원에 대해서는 추가적인 인증 또는 권한 부여를 필요로하지 않게 됨.

-static 자원-
CSS - Resources under "/css".
FAVICON - The "favicon.ico" resource.
IMAGES - Resources under "/images".
JAVA_SCRIPT - Resources under "/js".
WEB_JARS - Resources under "/webjars".

 

PathRequest.toStaticResources().atCommonLocations()/css/**,  /images/**,  /js/** 등의 하위 자원에 대해 인증 및 권한을 필요로 하지 않음. 

background image는 /assets/img 하위에 있기 때문에 인증 및 권한이 필요하여 적용되지 않았던 것임.

filterChain.antMatchers() "/assets/**"을 포함시켜 문제 해결.

 

OR

 

/assets/img 하위에 있는 background image을 /images로 옮기고

styles.css의 background image의 파일 경로를 수정하면

filterChain.antMatchers()"/assets/**"을 포함시킬 필요 없음! <- 이렇게 해결함

 


[참고]

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/security/StaticResourceLocation.html

https://blog.naver.com/hal_su_it_da/223099042679

728x90
반응형