관리 메뉴

나의 개발일지(김지헌)

항해 99 22일차 10/10 본문

항해 99

항해 99 22일차 10/10

코딩이좋아요 2022. 10. 11. 02:03

오늘도 과제에 나온 api명세서를 보고  회원가입및 로그인 기능과 글작성을 몽고 디비와 몽구스를 사용하여  하고 있었고

 댓글 및 좋아요만 놔두고 다 구현 해놨는데 과제 요구사항에 MYSQL과 시퀄라이즈를 시용하여 구현을 해야해서 몽구스로 짠 코드를 MYSQL과 시퀄라이즈를 사용한 방법으로 바꾸는 중입니다.

기존 미들웨어 코드

토큰 검증 하는 부분인데 authorization이 프론트에서 보내주는 부분이라서 썬더 클라이언트에서 bearer와 쿠키로 바꿨는데 시퀄라이즈를 사용하면서 쿠키파서를 이용하여 토큰으로 확인을 했다.

더보기

const jwt = require('jsonwebtoken')
const User = require('../models/user')

module.exports=(req,res,next)=>{
 const {authorization} = req.headers
 console.log(req.headers)
 console.log(authorization)
 /// 예외처리 로그인을 안했을때!
 if (!authorization){
  res.status(401).send({
    errorMessage : '로그인이 필요한 기능입니다.'
  })
  return;
}
//  }else {
//   res.status(401).send({
//     errorMessage : '이미 로그인'
//   })
//  }
 const [tokenType, tokenValue] = authorization.split(' ') //토큰 받아서 공백기준으로 스플릿
 //로그인 안했을시
 if (tokenType !== 'Bearer'){
  res.status(401).send({
    errorMessage : '로그인이 필요한 기능입니다.'
  })
  return;
 }
 try{      //검증
  const {userId} = jwt.verify(tokenValue,'123')
  User.findById(userId).then((user) =>{
    res.locals.user = user; //locals에 저장 해서 사용
    next();
  })
 }catch(error){
  res.status(401).send({
  errorMessage : '로그인이 필요한 기능입니다.'
 })
 return; //핸들러가 실행하면 안되니깐

}

 

바꾼 코드 MYSQL 시퀄라이즈

더보기
module.exports=(req,res,next)=>{
    const { token } = req.cookies //req.cookies를 받아서 토큰으로 받았다
 if (!token){
  res.status(401).send({
    errorMessage : '로그인이 필요한 기능입니다.'
  })
  return;
}
try {
  const { userId } = jwt.verify(token, "123");
  console.log(userId)
  User.findByPk(userId).then((user) => {
    res.locals.user = user;
    next();
  });
} catch (err) {
  res.status(401).send({
    errorMessage: "로그인 후 이용 가능한 기능입니다.",
  });
}
};

'항해 99' 카테고리의 다른 글

항해 99 25일차 10월 13일  (0) 2022.10.14
항해 99 24일차 10월 12일  (0) 2022.10.13
항해 99 21일차 10/09  (0) 2022.10.09
항해 99 20일차 10/08  (0) 2022.10.08
항해 99 19일차 10/07  (0) 2022.10.07