반응형
📌 문제상황
현재 운영하고 있는 앱에서 로그인 관련 문제가 존재했다.
로그인을 할 때 세션 관련 문제가 존재했는데, 문제를 해결하고자 다양한 방법을 시도하고 있었다.
그 중 하나의 방법이 로그인 API 호출 시 요청에 세션이 담긴 쿠키가 존재하더라도 새로운 세션 및 쿠키를 발급해주는 코드였다.
그래서 로그인 API 호출 시 기존의 세션을 무효화(invalidate)하고 새롭게 세션을 발급해주고자 했다.
📌 해결방법
httpSession.invalidate(); 코드를 통해 기존의 세션을 무효화 하고, request.getSession()를 통해 새로운 세션을 생성하고자 했다.
하지만 세션이 생성되지 않았는데, 이는 getSession의 argument에 의한 차이로 생성되지 않았다.
▶️ request.getSession(True)
request.getSession()은 request에서 session을 가져오는 코드인데 argument가 입력되지 않으면 default로 true가 들어가게 된다.
해당 값이 true인 경우 만약 세션이 존재하지 않으면 새로운 세션을 생성하게 된다.
HttpSession session = request.getSession();
하지만 아래와 같이 argument가 false로 입력되면, 세션이 존재하지 않을 시 null을 반환하게 되어 새롭게 세션이 생성되지 않는다.
HttpSession session = request.getSession(false);
📌 결과
로그인 시에 기존에 쿠키가 존재하더라도 새로운 세션을 통해 재발급 해주는 것을 확인할 수 있었다.
반응형
'Java > Spring' 카테고리의 다른 글
[Spring] 로그인과 무관한 API 호출 시 Session이 발급되는 현상 (0) | 2023.11.14 |
---|---|
[Spring] spring_session 테이블의 expiry_time이 변경되지 않는 문제 (0) | 2023.10.16 |
[Spring] server.servlet.session.timeout과 spring.session.timeout의 차이 (0) | 2023.10.13 |
[Spring] OAuth2 소셜 로그인 후 Postman에서 Session 설정하기 (0) | 2023.09.30 |
[Spring] Spring Security에서 발생한 403 Forbidden 에러 처리 (0) | 2023.09.26 |