[node.js] 세션을 이용한 로그인 구현 중 브라우저 쿠키의 maxAge 초기화 안 되는 문제 발생 (질문)

sookyoung.k·2024년 2월 6일
0

🍏 NodeJS

목록 보기
6/10
post-thumbnail

⚠️ OKKY에 질문 글을 올려보려다가 뭔놈의 검색어가 막혀서 (대체 여기서 시발 왜) 우선 벨로그에 옮겨적어 놓는 내 질문글...


Node.js(v18.17.0) + TypeScript로 개발을 진행하고 있습니다.

express 로 서버를 구축했고, express-session , session-file-store 라이브러리를 사용해서 로그인 기능을 구현했습니다.

제가 원하는 것은 세션 만료 시간을 연장하는 기능을 만드는 것인데...

서버에서는 세션 쿠키 만료 시간이 재설정(초기화)가 되는데 브라우저에 저장된 쿠키 만료 시간은 그대로인 상태라 연장이 되지 않습니다.

  1. 처음 제 코드는 이렇습니다.
export const extendSession = async (req: Request, res: Response) => {

    req.session.resetMaxAge();

    res.json({
      success: true,
      message: '세션 연장 성공',
      expiredTime: req.session.cookie.expires.getTime(),

    });

};

이런 식으로 resetMaxAge() 함수를 통해서 만료 시간을 연장할 수 있을거라 생각했습니다. (트라이캐치문은 생략하였습니다.)

콘솔에 값을 확인해봤을 때

최초 쿠키 값은 expires: 2024-02-06T06:01:47.705Z 이 이렇게 찍혔다면

세션 연장을 했을 때 cookie의 maxAge: 360000 🪄 연장 완료

cookie의 expires: 2024-02-06T06:01:47.705Z → expires: 2024-02-06T06:08:25.552Z🪄 만료 시간 연장 완료된 것을 확인할 수 있었습니다.

하지만 그렇다고 하더라도 브라우저에 저장된 쿠키의 만료 시간을 확인해보면 최초의 쿠키 값 그대로였습니다.

  1. 이를 해결하기 위해서 만료 시간을 따로 정해서 줘보기도 했습니다.

req.session.cookie.maxAge = 3600000;

하지만 마찬가지로 세션 쿠키의 만료 시간은 바뀌지만 브라우저에 저장된 쿠키의 expires가 변하지 않았습니다.

  1. 따로 헤더를 줘보아도 새로운 쿠키가 생성될 뿐 해결책이 되지 않았습니다.

res.setHeader('Set-Cookie', 'Max-Age=3600000')

express-session 미들웨어가 자동으로 set-cookie 헤더를 설정해주어서 제가 여기에 어떻게 접근할 수 있을지 모르겠습니다.

브라우저의 쿠키가 초기화 적용을 받지 못하는 것이 문제인 것 같은데... 원인은 대충 알 것 같으면서 해결책을 모르겠습니다.

session 설정은 이렇습니다!

app.use(
  session({
    secret: process.env.SESSION_SECRET_KEY,
    resave: false,
    saveUninitialized: false,
    cookie: {
      sameSite: 'lax',
      secure: false,
      httpOnly: true,
      maxAge: 1000 * 60 * 5,
    },
    store: new FileStore({
      reapInterval: 3000,
    }),
  }),
);
profile
영차영차 😎

0개의 댓글

Powered by GraphCDN, the GraphQL CDN