인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

wdhgood123님의 프로필 이미지
wdhgood123

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

nodebird-api코드 질문입니다

작성

·

321

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
질문자

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

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

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

wdhgood123님의 프로필 이미지
wdhgood123

작성한 질문수

질문하기