interceptor 패키지에 

[ LoginCheckInterceptor ] 클래스 만들기

public class LoginCheckInterceptor implements HandlerInterceptor {
	
	/* preHandle 메소드 : 컨트롤러에 가기 전 Interceptor에서 캐치해서 작업 수행 */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		
		HttpSession session = request.getSession(); //세션 불러오기
		User user = (User) session.getAttribute("user");
		if(user == null) {
			//인증이 안된 상태 => 로그인 화면으로 이동
			String url = session.getServletContext().getContextPath() + "/login";
			response.sendRedirect(url); //리다이렉트 요청 로그인
			System.out.println("LoginInterceptor # preHandle() : 로그인 안됨");
			return false;
		}
		
		// 인터셉터 메소드에서 리턴이 true면 통과 false면 차단
		System.out.println("LoginInterceptor # preHandle() : 통과됨");
		return true;
	}

}

 

 

인터셉터 등록

main 패키지에 [ WebConfig 클래스 ]

@Configuration
public class WebConfig implements WebMvcConfigurer {

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		// 인터셉터를 추가하는 메소드
		registry
			.addInterceptor(new LoginCheckInterceptor())
			.addPathPatterns("/board/**")   		//인터셉터를 적용할 컨트롤러주소
			.excludePathPatterns("/board/list", "/board/get");	//적용 안할 주소
	}
}

 

반응형
LIST

+ Recent posts