• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

auth middleware 관련 질문입니다

21.01.21 13:10 작성 조회수 79

0

(12)auth middle 영상에서 req.user = decode 이 부분 맞는건가요???

if문으로해서 일치한다면 next()로 해서 넘겨줘야하는거 아닌가요???

정말 죄송하지만 질문이 하나 더 있는데, 

next()이면 받은 인자를 그대로 넘겨주는건가요?? 

죄송합니다 질문이 많았네요 ㅠㅠ 

답변 2

·

답변을 작성해보세요.

1

 if (!token) {
    return res.status(401).json({ msg: "토큰 없음. 인증이 거부됨!!!" });
  }
  try {
    const decoded = jwt.verify(tokenJWT_SECRET);
    req.user = decoded;
    next();
  } catch (e) {
    console.log(e);
    res.status(400).json({ msg: "토큰이 유효하지 않습니다" });
 }
이 부분은 console.log(decoded)를 해보시면 무슨의미인지 아실 것입니다. 

즉, 토큰에서 들어오는 것을 해독해 놓으면 req.user에  일단 담아 놓고, 다음으로 넘어갑니다. 

그러면 req.user는 토큰의 암호화된 값이 아닌, 해석된 값이 들어 있으므로 서버에서 해당 유저를 검색할 수 있습니다. 

2. next()는 다음으로 넘어간다는 것으로, 뭔가를 담아서 넘길때는 error을 에러라고 하면 next(error) 라고 해서 넘길 수 있습니다. 

이걸 응용하면 모든 에러를 라우터별로 처리하는게 아니라 한 곳으로 모두 넘겨서 처리도 가능합니다. 보통 이런 경우는 try catch를 두번 써서 넘기거나 아니면, aysncHandler(try catch 2번 쓰기 안예쁘니 예쁘게 묶어주는 단순한 라이브러리)라는 라이브러리를 써서 예쁘게 넘깁니다.

이와 관련된 강의는 현재 제작 중으로 향후 공개 예정입니다. 

0

wjdrb3434님의 프로필

wjdrb3434

질문자

2021.01.25

아 감사합니다 제가 착각했던거 같습니다. 이제 정확히 이해한거 같습니다 감사합니다~~