• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

nodebird-api코드 질문입니다

22.05.26 00:50 작성 조회수 248

0

exports.verifyToken = (req, res, next) => {
  try {
    req.decoded = jwt.verify(req.headers.authorization, process.env.JWT_SECRET);
    return next();
  } catch (error) {
    if (error.name === 'TokenExpiredError') {
      return res.status(419).json({
        code: 419,
        message: '토큰이 만료되었습니다',
    });
    }
    return res.status(401).json({
      code: 401,
      message: '유효하지 않은 토큰입니다',
    });
  }
}

토큰을 검사하는 미들웨어 입니다

req.decode가 어떻게 생성되는지 궁금합니다. 

또 jwt.verify함수가 토큰을 검사하는 함수로 알고있는데 토큰이 유효하다면 토큰을 req.decode에 넣는것인가요?

그리고

const result = await axios.get('http://localhost:8002/v1/test', {
      headers: { authorization: req.session.jwt },
  });

axois.get 요청에 headers에 authorization부분에 세션을 넣던데

authorization 넣는 이유가 따로 있을까요? 

router.get('/posts/my', verifyToken, (req, res) => {
  Post.findAll({ where: { userId: req.decoded.id } })
    .then((posts) => {
      console.log(posts);
      res.json({
        code: 200,
        payload: posts,
      });
    })
    .catch((error) => {
      console.error(error);
      return res.status(500).json({
        code: 500,
        message: '서버 에러',
      });
    });
});

이 부분에서 posts는 Post모델의 배열로 나오는데 그 앞에서 선언되지 않았음에도 불구하고 쓰던데 따로 규칙같은게 있나요?

users면 User모델의 배열이라던가 등등...

 

 

 

 

답변 1

답변을 작성해보세요.

0

req.decode가 어떻게 생성되는지 궁금합니다. 

또 jwt.verify함수가 토큰을 검사하는 함수로 알고있는데 토큰이 유효하다면 토큰을 req.decode에 넣는것인가요?

- req.decoded 속성 값으로 토큰을 넣는 겁니다. 어떻게 생성되냐는 질문은 제가 이해를 못 하겠습니다.

 

axois.get 요청에 headers에 authorization부분에 세션을 넣던데

authorization 넣는 이유가 따로 있을까요? 

- 세션을 넣는게 아니라 토큰을 넣는 겁니다. 인증 토큰은 authorization 헤더에 넣습니다.

 

이 부분에서 posts는 Post모델의 배열로 나오는데 그 앞에서 선언되지 않았음에도 불구하고 쓰던데 따로 규칙같은게 있나요?

- 여러 개를 찾는 쿼리면 배열이고 하나만 찾는 쿼리면 하나의 객체로 나옵니다. 이름만 봐도 알 수 있습니다. findAll, findOne...

wdhgood123님의 프로필

wdhgood123

질문자

2022.05.26

그렇다면 findAll쿼리을 쓰면 posts가 저절로 생성된다는 말씀이신가요?

배열 안에 찾은 포스트들을 넣어서 리턴하는 것입니다