[Project_] TD Trouble Shooting - 2

2024. 12. 31. 21:33·Project_xxx

WebSocket을 사용한 Tower Defense 게임 만들기 트러블 슈팅 - 2

로그인하고 브라우저를 닫았을 때 세션에 대한 처리

● session 개념을 도입하여 Redis에 로그인했을 때 기록을 저장하고 있다.

로그인 했을 때 시간, 토큰 등 저장


발생한 문제점

● 로그인하고나서 '로그아웃' 버튼이 생성되게 구현했지만 쿠키가 저장되지 않는 환경에서 브라우저를 닫으면
   세션이 남아 있는 현상이 발생했다.

다른 곳에 로그인 되어 있다는 알림 발생


해결 방법

● ip에 대한 개념을 도입했다. 

  - Redis session 데이터를 저장할 때 ip에 대한 데이터도 포함했다.

// src/routes/account-router.js
 // Redis에 세션 데이터 저장 (Hash 형식)
    await redisClient.hSet(sessionKey, {
      userId: user.id,
      email: user.email,
      ip: clientIp,
      loginTime: new Date().toISOString(),
      token,
    });

  - 클라이언트가 접속했던 ip를 저장함으로써 다른 ip에서 로그인했을 때, 다른 곳에 로그인되어 있음을 알리는
    메시지 생성

 

Redis에는 요로코롬 저장된다

 

// public/src/login.html
const confirmLogout = confirm(result.message); // "이미 로그인된 계정입니다."
            if (confirmLogout) {
              // 기존 세션 삭제 요청
              await fetch('http://localhost:3000/api/account/logout', {
                method: 'DELETE',
                headers: {
                  'Content-Type': 'application/json',
                },
                body: JSON.stringify({ email }),
              });

              alert('기존 세션이 종료되었습니다. 다시 로그인하세요.');
              document.getElementById('login').click(); // 재로그인 요청
            }

  - Client에서 세션 삭제 요청으로 다른 ip에서 생성된 session을 삭제를 요청하는 코드 구현
  - 이 때 삭제되는 요청에 대해서는 토큰이 필요하지 않다.

 

 

해결이 되었는가?

 

다른 곳에 로그인 되었을 때 로그아웃 하겠냐고 알림 생성

 

기존 세션을 삭제
다시 로그인 하는 과정은 귀찮기에 바로 이미 입력된 값으로 로그인!

 

 

사소하지만...

● 프로젝트에 있어서 사소한 부분이지만 개발할 때나 사용자가 이용할 때는 필요한 부분이다.

● 현재는 로컬에서 테스트하고 있기에 작동할 수도 있고, ip를 배포했을 때 상황에서 테스트가 필요하다.

'Project_xxx' 카테고리의 다른 글

[Project_] MG - Trouble Shooting  (0) 2025.01.16
[Project_] TD - Final  (0) 2025.01.02
[Project_] TD Trouble Shooting - 1  (1) 2024.12.30
[Project_] RTG - Trouble Shooting 2  (1) 2024.12.19
[Project_] RTG - Trouble Shooting  (1) 2024.12.18
'Project_xxx' 카테고리의 다른 글
  • [Project_] MG - Trouble Shooting
  • [Project_] TD - Final
  • [Project_] TD Trouble Shooting - 1
  • [Project_] RTG - Trouble Shooting 2
wakelight23
wakelight23
했던 공부를 기록하는 곳
  • wakelight23
    wakelight23 공부기록
    wakelight23
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Programming Language (26)
        • Error Note (1)
        • HTML, CSS (3)
        • Javascript 공부기록 (5)
        • SQL 문제풀이 (4)
      • Develop Diary (34)
        • Interview (20)
        • TheFourFs (13)
      • Project_xxx (18)
      • IT (32)
        • DB (0)
        • Hardware (3)
        • Network (10)
        • Server (11)
        • OS (4)
        • 게임수학 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Til
    weekly i learned
    today i learnd
    KPT회고
    today i leraned
    Today I learned
    today i lerned
    Wil
  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
wakelight23
[Project_] TD Trouble Shooting - 2
상단으로

티스토리툴바