* Interceptor 

해당 Controller가 실행되기전, 실행된 후에 낚아 채서 실행할 내용 작성가능
ex)  해당 요청을 할 수 있는 회원이 맞는지 " 로그인 여부 판단 "
      해당 요청을 할 수 있는 권한의 회원이 맞는지 "권한체크"

- preHandle(전처리) : DispatcherServlet이 Controller를 호출하기 전에 낚아 채는 영역

- postHandel(후처리): Controller에서 요청 처리 후 DispatcherServlet으로 뷰 정보가 리턴되는 순간 낚아채는 영역

 

>> 로그인전에는 마이페이지/글쓰기 하지 못하도록 설정 

1. HandlerInterceptor implements하는 클래스 만들기 

public class LoginInterceptor implements HandlerInterceptor { 
	
	 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		 //true 리턴시 => 기존 요청 흐름대로 해당 Controller 제대로 실행
		 //false리턴시 => Controller실행되지 않음
		 
		 HttpSession session = request.getSession();
		
		 //현재 요청을 보낸 사람이 로그인이 되어있을경우 => 정상적으로 Controller실행
		 //로그인이 되어있지 않을 경우 => Controller실행 안됨 
		 if(session.getAttribute("loginUser") != null) {
			 return true;
		 }else {
			 session.setAttribute("alertMsg", "로그인 후 이용가능한 서비스 입니다.");
			 response.sendRedirect(request.getContextPath());
			 return false;
		 }
		
	}

 

2. Servlet- context.xml파일에 bean등록 

<interceptors>
		 <interceptor>
		  	<mapping path="/myPage.me" />
		  	<mapping path="/enrollForm.bo" />
		  	
		  	<beans:bean class="com.br.spring.common.interceptor.LoginInterceptor" id="loninInterceptor" />
		 </interceptor>
	  </interceptors>

 

 

'Framework > Spring' 카테고리의 다른 글

02. Maven , Spring Framework  (0) 2023.02.20
01. Spring 개발환경 구축  (0) 2023.02.20
복사했습니다!