[문제사항]
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/**"을 포함시킬 필요 없음! <- 이렇게 해결함
[참고]
'YC TECH ACADEMY > projects' 카테고리의 다른 글
[Spring/Spring Boot] dev와 live을 분리하여 dev에는 H2, live에는 MySql 연동하기 (0) | 2023.11.28 |
---|---|
[Spring/Spring Boot] Spring Date JPA을 이용하여 특정 column 값 기준 오름차순/내림차순 정렬하기 (0) | 2023.11.28 |