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;
}
}
반응형