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

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

wjdrb3434님의 프로필 이미지
wjdrb3434

작성한 질문수

리액트로 나만의 블로그 만들기(MERN Stack)

auth middleware 관련 질문입니다

작성

·

137

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

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

wjdrb3434님의 프로필 이미지
wjdrb3434

작성한 질문수

질문하기