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/**"); // 제외할 경로
}
}