티스토리 뷰
타임리프에도 변경사항이 있었다.
가장 대표적인 변화라면, 타임리프에서 session 객체와 request 객체에 직접 접근하던 것을 차단한 것이다.
예를 들어 spring boot 2.2.12에서는 아래와 같은 타임리프 구성이 가능했다.
th:with="currentUrl=(${#httpServletRequest.requestURI + '?' + #strings.defaultString(#httpServletRequest.queryString, '')})">
이제 새로운 버전에서는 #httpServletRequest , session 등, 서블릿 객체에 위와같은 방식으로 접근하는 것이 모두 막혔다.
삭제한 이유는 문서에 명시하지는 않았지만, github 이슈에서 아래와 같이 보안 이슈라고 언급하고 있다.
These objects are not directly available in templates in Thymeleaf 3.1 for security reasons. The recommended way to make this information available to templates is to add the specific pieces of information that are really needed by the template as context variables (model attributes in Spring).
대안으로 아래처럼 사용할 것을 권장하고 있다.
@ControllerAdvice
public class GlobalControllerAdvice {
@ModelAttribute("currentUrl")
public String currentUrl(HttpServletRequest request) {
String queryString = request.getQueryString();
return request.getRequestURI() + (queryString != null ? "?" + queryString : "");
}
@ModelAttribute("currentUser")
public String getCurrentUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && authentication.isAuthenticated()) {
return authentication.getName();
}
return "testUser";
}
}
그 다음으로 문제가 된 부분은 아래와 같이 사용하던 부분이었다. 이 부분은 당장 deprecated 된 것은 아니지만, 그대로 사용할 경우 경고메시지가 뜬다.
이제 명시적으로 fragment 관련 표현은 ~{} 를 명시적으로 추가하는 것으로 스펙이 변경되었다.
Before
<div id="top" th:insert="common :: header">...</div>
After
<div id="top" th:insert="~{common :: header}">...</div>
다행히 이 2개 말고는 크게 문제될 것이 없었다.
아래 링크를 보면 어떤 것이 변했는지 모두 기록되어있으니 읽어보는 것을 추천한다.
'개발 > 스프링' 카테고리의 다른 글
JPA에 관한 단상(1) - N+1 문제의 본질 (2) | 2024.11.09 |
---|---|
spring boot 3.2.2 전환기(5) - pom.xml 추가수정 (0) | 2024.04.13 |
spring boot 3.2.2 전환기(3)- Spring Security 변경 (0) | 2024.03.25 |
spring boot 3.2.2 전환기(2) - Spring Web MVC 변경 (0) | 2024.03.23 |
Spring boot 3.2.2 전환기(1) - 버전 변경 (1) | 2024.03.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ORM
- Java17
- tomcat
- 공익제보단
- Spring
- ouath2
- 한국교통안전공단
- Request
- 안전신문고
- 토스페이
- k베뉴
- 홈택스
- springboot
- 포상금
- 오블완
- 현금영수증
- Azure
- 전세사기
- 이륜차
- 알리익스프레스
- java
- 티스토리챌린지
- 알리
- 부가가치세
- n+1
- springboot3
- Thymeleaf
- JPA
- 탈세
- 광군제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함