home.html에서 isLoggedIn 파라미터를 유지하려면 어떤 방식으로 전달해야 할까
**home.html
**에서 **<a th:if="${isLoggedIn}" ...>
**처럼 isLoggedIn
값을 쓰기 위해서는 뷰 렌더링 시점에 Spring MVC 모델 안에 isLoggedIn
값이 존재해야 합니다.
현재처럼 **AuthInterceptor
**의 **postHandle()
**에서 **modelAndView.addObject("isLoggedIn", ...)
**으로 매번 모델에 넣어주는 방법입니다.
modelAndView.addObject("isLoggedIn", isLoggedIn);
modelAndView.addObject("isAdmin", isAdmin);
${isLoggedIn}
**으로 사용 가능redirect:
이후 모델 값이 없으면, Spring이 자동으로 URL 파라미터로 만들어서 붙여버리는 현상 발생
👉 /?isLoggedIn=false&isAdmin=false
이런 형태
URL 오염 / 보안 노출 가능성
ACCESS_TOKEN
쿠키의 유무로 로그인 여부를 판단할 수 있다면,
Interceptor가 매 요청마다 쿠키를 확인해 isLoggedIn
값을 model에 세팅해주는 방식이 가능합니다.
이미 Interceptor에서 로그인 여부 판단을 하시니까, 쿼리 파라미터 없이도 처리가 가능합니다.
javaif (modelAndView != null && modelAndView.getViewName() != null && !modelAndView.getViewName().startsWith("redirect:")) {
boolean isLoggedIn = false;
*// 쿠키 체크*
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("ACCESS_TOKEN".equals(cookie.getName()) && StringUtils.hasText(cookie.getValue())) {
isLoggedIn = true;
break;
}
}
}
modelAndView.addObject("isLoggedIn", isLoggedIn);
}