BE/Spring

[Spring] Inteceptor prehandle 에서 response 넘기는 방법

멍목 2023. 4. 6. 20:17
반응형

Spring의 Interceptor에서 로그인 세션이 없는 경우, return false를 하게 구현하였다.

 

이 구조에서, 추가로 react를 붙여서 같이 Interceptor를 사용하였다.

 

아래 소스처럼 response에 데이터를 writer를 이용해서 넣어주면 return false를 해도 response를 넘겨줄 수 있다.

 

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{ 
	if( sessionDto == null )
    {
      /**** 어느 플랫폼에서 요청이 왔는 지 확인 ****/
      String type = StringUtility.procNull((String) request.getParameter("type"), "");

      // JSON : JSON 형식으로 로그인이 만료됐다는 것을 반환
      if("JSON_TYPE".equals(type)) {
          JSONObject result = new JSONObject();
          result.put("message", "Unauthorized access(Login Fail)");
          result.put("result", "fail");		// result에 fail을 넘겨줌

          PrintWriter out = response.getWriter();
          response.setContentType("application/json");
          response.setCharacterEncoding("UTF-8");
          response.setStatus(200);					// 200으로 반환하도록 함(콘솔에 403 에러가 보기 싫어서)
          out.print(result.toJSONString());
      }
      // 기존 방식
      else {
        response.sendRedirect("로그아웃 페이지");
      }
      /**** 어느 플랫폼에서 요청이 왔는 지 확인(끝) ****/

        return false;
    }
}
반응형