반응형
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;
}
}
반응형
'BE > Spring' 카테고리의 다른 글
JdbcTemplate를 이용한 데이터 통신 (1) | 2024.09.19 |
---|---|
[Spring Security] JSON으로 로그인 및 응답하기 (0) | 2023.12.10 |
[Spring Security] React(Front)와 Spring Security 설정 방법 (2) | 2022.07.19 |
[Spring Security] JWT - 4. JWT 로그인 및 권한 처리 (0) | 2022.06.19 |
[Spring Security] JWT - 3. JWT 임시 토큰 테스트 및 로그인 시 토큰 생성 (0) | 2022.06.18 |