개발자

node.js express.js 백엔드 개발 시 자동 로그아웃 관련

2024년 02월 16일조회 123

안녕하세요 헬스케어 콘텐츠 개발팀에서 근무하고있는 이제 1년 2개월이된 서버개발자입니다. 서버쪽은 저 혼자라서 서버쪽 도움을 요청할분이 없기에 이렇게 도움을 요청 드리게 되었습니다! node.js express.js로 개발중인데요! 클라이언트쪽은 다른분이 unity로 개발중에있습니다. 앱에서 로그인하고 일정시간동안 아무 이벤트가없으면 자동로그아웃이 되도록 구현하려고합니다. 알아보니 setInterval를 사용하면 될 것같아 구현은했는데 postman으로 테스트시 console에 자동 로그아웃 성공되는 부분까지 확인이 되었습니다. 그런데 클라이언트쪽 return에 대해서는 아무 반응이 없다보니 이렇게 처리하는게 맞나라는 생각이 듭니다. 개발하고 unity 클라이언트 앱 쪽과 api 통신을할껀데 setInterval로 자동 로그아웃 기능을 구현면 어떻게 unity 클라이언트쪽에서 확인하고 팝업창을 띄우거나 로그인 페이지로 돌릴지 감이 잡히지않아 이렇게 요청드립니다..!! 정리하자면.. node.js로 백엔드 개발중 일정 시간이 지나도록 이벤트(마우스,키보드,api요청)가 전혀없을때 setInterval로 만들어 놓은 자동 로그아웃이 실행되고 return 값을? unity 클라이언트쪽에서 받아서 팝업창에 띄우는 흐름대로 하려고하는데 관련 키워드나 해결방법을 알고싶어 도움 청하게 되었습니다..!!! 혹시나 제가 처리하려는 흐름이나 setInterval로 접근하는게 잘못된것일까요..?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

백승훈님의 프로필 사진

안녕하세요 답변 드리겠습니다 😏 먼저 일정 시간동안 동작이 없을 시 로그아웃 절차는 백엔드보다 프론트에서 하는게 맞을 것 같습니다. (백엔드에서 처리해야 할 이유가 없습니다.) 예를 들어 access나 refresh 토큰의 유효시간 및 관리등은 백엔드에서 일정 주기별로 무효화하고 클라이언트에서 특정 요청을 주면 만료하거나 재발행하는 기능은 자주 사용됩니다. 하지만 백엔드에서 클라이언트의 사용양으로 로그아웃 시키고 팝업을 띄우는걸 클라이언트에 보내 관리를 한다? 라는 것은 조금 어색한 것 같습니다. 클라이언트에서 충분히 관리 가능한 부분이며 백엔드와 통신을 해서 리소스나 서버 사용량을 늘리며 setinterval로 메모리까지 사용 할 이유가 없을 듯 합니다. 클라이언트(앱)에서 일정 주기동안 반응이 없어서 로그 아웃 시키려면 토큰 삭제 후 로그아웃 처리 혹은 백엔드의 로그아웃 API를 만들어 내부 토큰을 삭제하고 로그아웃 API 사용 등이 있을 것 같습니다. 백엔드에서는 토큰이 유효한지, 어느 주기로 관리할지 등만 체크하는게 맞을 것 같습니다. ex) 이러한 시간을 꼭 백엔드에서 관리하시고 싶으시다면 setinterval 과 같이 지속적으로 메모리에 남는 기능을 사용하시는 것보다 lastAccess 필드를 만드시고 내부에 각 api (로그인 ~) 시에 현재 시간을 넣어주는 필드를 만드시고 어떤 요청이 들어왔을 때 이 lastAccess와 현재 시간을 조회하여 지정한 시간이 안 지났다면 lastAccess에 다시 현재 시간을 기록하며 지났으면 토큰을 만료시키고 401 에러를 발생시키면 됩니다. 하지만 추천드리고 싶은 방법은 아닐 것 같내요 😁

성진님의 프로필 사진

성진

작성자

서버2024년 02월 16일

정말 감사합니다! 말씀해주신 내용을 보니 이해가 갑니다!! 제가 잘 못 처리하고 있었네요...!!!! 감사합니다!!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!