@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
복사