📝 로그인 인터셉터 구현
<!-- 구현한 인터셉터를 bean으로 등록 -->
<beans:bean class="com.sd08.mvc.interceptor.LoginCheckInterceptor" id="confirm"/>
<!-- 요청 경로(path)와 Interceptor bean을 매핑 -->
<interceptors>
<interceptor>
<mapping path="/*"/>
<!-- 인터셉터를 거치지 않을 페이지 따로 지정 (login 페이지와 home 페이지)-->
<exclude-mapping path="/login"/>
<exclude-mapping path="/"/>
<beans:ref bean="confirm"/>
</interceptor>
</interceptors>
📌 인터셉터 Mapping 방식
1. mapping path: 인터셉터를 걸어놓고 싶은 경로 매핑
2. exclude-mapping: 모든 경로를 걸어놓고 지정해 놓은 페이지는 제외 (위의 예시)
로그인을 위한 Interceptor이다. 로그인 성공은 아이디와 패스워드가 같을 경우 로그인을 승인하도록 구현하였다.
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
⭐ HandlerInterceptor 구현
public class LoginCheckInterceptor implements HandlerInterceptor{
⭐ preHandle 메서드 오버라이드
/**
* HandlerMapping이 되기 이전에
* @return boolean타입으로 true일 경우, 계속 실행 false일 경우, 계속 실행하지 않겠다
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 1. 해당 요청 영역 내의 세션 불러오기
HttpSession session = request.getSession();
if(session.getAttribute("loginUser") == null) {
// @GetMapping("login")에 매핑된다
// get방식으로 요청보내는 것이므로
response.sendRedirect("login");
return false;
} else {
return true;
}
}
}