Search
Duplicate

[스프링 게시판] 로그인 요구 페이지 구분

@3/20/2023

인터셉터

public class LoginInterceptor implements HandlerInterceptor { @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("loginUser") == null) { response.sendRedirect("/users/login?redirectURL=" + requestURI); return false; } else { User loginUser = (User) session.getAttribute("loginUser"); request.setAttribute("loginUser", loginUser); return true; } } }
Java
복사

유저 컨트롤러

로그인 필요할 경우 로그인 페이지로 redirection될 때 다시 돌아갈 redirection URL 추가
default 값으로 "/" 설정 - null일 경우 HomeController로
로그인 버튼을 직접 눌러서 들어온 경우에도 redirection을 시킬까 했는데, 드물지만 다른 사이트에서 url을 직접 쳐서 들어올 경우도 있으니 home으로 보내는 것이 간편하겠다고 생각이 듦

설정 클래스

LoginInterceptor를 0순위로 추가
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()) .order(0) .addPathPatterns("/**") .excludePathPatterns("/", "/posts", "/users/login", "/users/logout", "/css/**", "/*.ico", "/error"); registry.addInterceptor(new LoginButtonsInterceptor()) .order(1) .addPathPatterns("/**"); } }
Java
복사