home.html에서 isLoggedIn 파라미터를 유지하려면 어떤 방식으로 전달해야 할까

**home.html**에서 **<a th:if="${isLoggedIn}" ...>**처럼 isLoggedIn 값을 쓰기 위해서는 뷰 렌더링 시점에 Spring MVC 모델 안에 isLoggedIn 값이 존재해야 합니다.

IsLoggedIn 값을 지속적으로 사용할 수 있는 대표적인 3가지 방법

1. Interceptor에서 모델에 계속 추가하기

현재처럼 **AuthInterceptor**의 **postHandle()**에서 **modelAndView.addObject("isLoggedIn", ...)**으로 매번 모델에 넣어주는 방법입니다.

modelAndView.addObject("isLoggedIn", isLoggedIn);
modelAndView.addObject("isAdmin", isAdmin);

장점

단점

2. 요청마다 쿠키에서 값을 읽어 모델에 넣기

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);
}

장점