세션 기반 로그인/로그아웃에서 자동으로 로그아웃 하는 방법

조회수 2475회

node.js 기반으로 웹 서비스를 개발하고 있습니다.

redis 를 세션용으로 사용하는데요.

예를 들어 이런 상황이 있다면,

어떤 사용자가 개인PC가 아닌 공용PC 에서 A 웹 서비스에 로그인 하였습니다. 서비스를 이용하고 로그아웃을 수동으로 하지 않은 채, 브라우저를 닫습니다.

이런 상황에 다른 사용자가 A 웹 서비스를 접속한다면 로그인이 유지된 채 접속될 것입니다.

이러한 사태를 해결하기 위해 어떤 방법이 있는지 감이 안 잡히고, 검색할 키워드도 찾지 못하여 질문 드립니다.

※ node.js 의 express 프레임워크 기반이며, redis 로 세션을 사용하고 있습니다.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    redis 로 세션을 사용하고 있다는 의미가 세션 데이터 저장을 redis에 저장한다는 의미겠지요.

    어차피 세션아이디라는 것이 필요하고 그것을 쿠키로 구워야합니다. 그렇게 생성된 쿠키에 저장된 세션아이디를 header에 담아서 서버에 보내 세션확인이 가능한겁니다.

    브라우저를 닫는다면 세션아이디가 달라질겁니다. 즉 브라우져를 닫는다면 문제가 될 가능성은 없어보입니다. 물론 탭을 닫았을 경우는 다릅니다.

    • 제가 이해한 것은... (1) 로그인을 성공하면 세션 아이디를 쿠키로 굽고, (2) 클라이언트에서 매 요청마다 header 에 쿠키를 담아서 서버로 보내고, (3) 서버에서는 매번 현재 세션의 아이디와 header 로 받은 세션 아이디와 비교를 한다. 인가요? 그렇다면 상당히 번거롭군요. 쉽게 끝날 일이 아니었군요... 상남자 2017.9.22 18:01
    • 잘 이해하셨네요. http 는 connectionless, stateless 합니다. 로그인전이나 후나 동일한 상태라는 겁니다. 그것을 극복하기 위해 세션을 사용하는 것이고 http는 고유의 세션아이디를 식별자로 사용합니다. 그것이 전부입니다. 로그아웃을 안하는 경우 세션 타임아웃이 있어 자동 삭제를 시키는 부가적인 장치가 하나 더 있는 것이구요. 정영훈 2017.9.22 23:00

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)