interceptor에서 확인

@Override  
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  
  
    String requestURI = request.getRequestURI();  
    HttpSession session = request.getSession(false);  
  
    if (session == null || session.getAttribute(LOGIN_USER) == null) {  
        // 미인증 사용자  
        response.sendRedirect("/login?redirectURL=" + requestURI);  
        return false;  
    }  
  
    return true;  
  
}

주요 기능

  • 유저가 기존 요청한 url 저장
    • requestURI = request.getRequestURI()` - 사용자가 원래 접근하려던 경로를 저장합니다.
  • 세션 존재 확인
    • session = request.getSession(false) - 현재 세션을 가져옵니다.
    • false 파라미터는 세션이 없을 경우 새로 생성하지 않고 null을 반환합니다.
  • 로그인 상태 확인
    • session == null || session.getAttribute(LOGIN_USER) == null
    • 세션이 없거나 세션에 로그인 사용자 정보가 없으면 인증되지 않은 사용자로 판단합니다.
  • 상태 확인 후 리다이렉트 처리
    • 로그인되지 않은 사용자는 로그인 페이지로 리다이렉트합니다.
    • 로그인 후 원래 페이지로 돌아갈 수 있도록redirectURL 파라미터에 원래 접근하려던 URI를 함께 전달합니다.

WebMvcConfig에 등록

@Configuration
public class WebConfig implements WebMvcConfigurer {
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginCheckInterceptor())
			.addPathPatterns("/**")                          // 모든 경로에 적용
			.excludePathPatterns("/login", "/logout", "/css/**");  // 제외할 경로
    }
}