Java/Spring

Java/Spring

[Spring] request.getSession()과 request.getSession(false)의 차이를 알아보자.

📌 문제상황 현재 운영하고 있는 앱에서 로그인 관련 문제가 존재했다. 로그인을 할 때 세션 관련 문제가 존재했는데, 문제를 해결하고자 다양한 방법을 시도하고 있었다. 그 중 하나의 방법이 로그인 API 호출 시 요청에 세션이 담긴 쿠키가 존재하더라도 새로운 세션 및 쿠키를 발급해주는 코드였다. 그래서 로그인 API 호출 시 기존의 세션을 무효화(invalidate)하고 새롭게 세션을 발급해주고자 했다. 📌 해결방법 httpSession.invalidate(); 코드를 통해 기존의 세션을 무효화 하고, request.getSession()를 통해 새로운 세션을 생성하고자 했다. 하지만 세션이 생성되지 않았는데, 이는 getSession의 argument에 의한 차이로 생성되지 않았다. ▶️ request...

Java/Spring

[Spring] 로그인과 무관한 API 호출 시 Session이 발급되는 현상

📌 문제상황 현재 SW마에스트로에서 개발한 앱에서 로그인 관련한 이슈가 다수 발생했다. 앱 실행했을 때 로그인 버튼이 안 나오거나, 세션이 만료되지 않았음에도 불구하고 앱을 껐다 키면 다시 로그인을 해야하는 문제가 있었다. 해당 문제를 해결하려고 하는 도중에 FE 개발자가 "쿠키에 아무것도 들어가지 않았는데 API가 호출이 된다."라는 말을 했다. 아마 클라이언트 단에서 쿠키를 캐싱하는 기능이 있나 했다... (이 부분에 대한 의문은 아직 풀지 못한 상태이다.) 일단 해당 현상을 재현하기 위해 Postman을 통해 Cookie에 아무것도 존재하지 않을 때 API를 호출했다. 그런데 이게 무슨 일인지, 세션을 발급해야 하는 API가 아님에도 불구하고 Cookie에 세션이 담겨 있는 것을 확인할 수 있었다...

Java/Spring

[Spring] spring_session 테이블의 expiry_time이 변경되지 않는 문제

문제 상황 앱을 개발하는 과정에서 로그인을 오랜 시간 유지 시키기 위해 spring_session 테이블에 저장되는 expiry_time을 변경해야 했다. 기본 값이 30분이었기 때문에 앱에서 로그인을 유지하기에는 시간이 매우 짧다고 생각했고 이를 더 길게 늘리고자 했다. 그래서 하단의 코드를 application.yml에 작성하여 세션 시간을 변경하고자 했다. spring: session: timeout: 2592000 하지만 위처럼 코드를 변경하여 다시 스프링 빌드를 하고 로그인 API를 실행시켰음에도 불구하고 expiry_time이 변경되지 않았다. 나는 이를 해결하고자 노력했으며, 노력하는데 꽤 오랜시간이 걸렸다... (문제를 해결하는 과정에서 멘토님의 도움을 받았으며, 공식문서를 꼭 읽어보자라는..

Java/Spring

[Spring] server.servlet.session.timeout과 spring.session.timeout의 차이

문제 상황 현재 앱 개발을 위해 로그인 개발을 진행 중이며, 사용자 로그인 유지를 위해 세션을 이용하고 있다. 세션에는 다양한 설정 값이 있는데, 로그인 유지 시간을 바꾸기 위해 spring_session 테이블에서의 max_inactive_interval을 변경하고자 했다. 하지만 spring에서의 session의 유지 시간을 변경하는 코드가 2개가 있었으며, 어떤 코드를 application.yml 파일에 작성해야 할지 감이 잡히지 않아 공부하는 계기가 됐다. 차이점 두 코드 모두 세션 타임아웃을 설정하는 속성이라는 공통점이 있지만, 사용되는 목적이 다르다. server.servlet.session.timeout(내장 서버의 세션) 내장 톰캣, 제티, 언더토우 등의 서블릿 컨테이너의 세션 타임아웃을..

당찬 뱁새
'Java/Spring' 카테고리의 글 목록