더북(TheBook)

미들웨어를 적용한 뒤 Postman으로 http://localhost:4000/api/auth/check 경로에 GET 요청을 해 보세요.

Not Found 에러가 뜰 텐데, 이는 아직 API를 구현하지 않았기 때문입니다. 터미널을 한번 확인해 보세요. 현재 토큰이 해석된 결과가 터미널에 나타날 것입니다. 만약 나타나지 않는다면, 로그인 API를 다시 성공적으로 호출하고 나서 확인해 보세요.

Listening to port 4000
Connected to MongoDB
{ _id: '5cbdae1249429f5f3a6bc39a',
username: 'velopert',
iat: 1555938210,
exp: 1556543010 }

이렇게 해석된 결과를 이후 미들웨어에서 사용할 수 있게 하려면 ctxstate 안에 넣어 주면 됩니다. jwtMiddleware를 다음과 같이 수정해 주세요.

src/lib/jwtMiddleware.js

import jwt from 'jsonwebtoken';

const jwtMiddleware = (ctx, next) => {
  const token = ctx.cookies.get('access_token');
  if (!token) return next(); // 토큰이 없음
  try {
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    ctx.state.user = {
      _id: decoded._id,
      username: decoded.username,
    };
    console.log(decoded);
    return next();
  } catch (e) {
    return next();
  }
};

export default jwtMiddleware;

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.