본문 바로가기

TIL

20210702 [항해 26일 차] Node.js 심화반 시작

놀라운 아이디어는 넘쳐난다. 단지 부족한 점은 그것을 실행하는 의지이다.
- 세스 고딘 -

  • GET 메서드는 Body에다가 데이터를 실을 수 없다. Query String 주소 뒤에 물음표로 어쩌고 저쩌고 해야 하는데 주소에 노출되기 때문에 보안과 관련된 데이터를 사용할 때는 이렇게 하면 안 된다. 따라서 로그인과 같은 기능은 GET보다 POST 메서드를 이용하는 게 좋다.
  • 로그인 시 입력한 데이터와 회원가입으로 인해 DB에 저장된 데이터를 비교하여 같을 경우 성공한 사용자의 유저 아이디를  JWT토큰에 담아 사용자에게 주는 과정이 로그인이다.
  • 미들웨어 만들기! 기능이 다르기 때문에 폴더를 만든 후 거기에 새 파일을 생성한다.
  • 미들웨어는 반드시 next가 호출되어야 한다. 호출되지 않을 경우 미들웨어 레벨에서 예외 처리에 걸려서 그 뒤에 있는 미들웨어까지 연결이 안되는 형식이다.
module.exports = (req, res, next) => {
    next();
}
// 사용자 인증 미들웨어 구현하기
const jwt = require("jsonwebtoken")
const User = require("../models/user")

module.exports = (req, res, next) => {
    const { authorization } = req.headers
    const [tokenType, tokenValue] = authorization.split(' ')

    if (tokenType !== 'Bearer') {
        res.status(401).send({
            errorMessage: '로그인 후 사용하세요'
        })
        return
    }

    try {
        const { userId } = jwt.verify(tokenValue, "my-secret-key")

        User.findById(userId).exec().then((user) => {
            res.locals.user = user
            next()
        })

    } catch (error) {
        res.status(401).send({
            errorMessage: '로그인 후 사용하세요'
        })
        return
    }

    
}
  • 오늘 한 일: 회원가입/로그인/사용자인증(미들웨어)/내 정보 조회 API 구현 , Joi를 이용한 Validation검증. validateAsync 사용했음(에러가 날 경우 throw 하기 때문에 try catch구문 사용 후 try에 넣어 감싼다),  status에 대한 기본개념, virtual스키마 생성(DB에는 안 들어가는 스키마 같은데 왜 하는지 어떤 효과가 있는지 정확히 모르겠다.) 
  • 내일 할 일: node 심화반 강의 다 들으며 숙제 제출하기. 가급적 다 듣는 것을 목표로 하되 너무 벅찰 경우 연습을 오래 하며 감을 익힐 예정
  • JWT, 쿠키, 세션 각각 방식의 특징과 각 방식 별로 나눠서 구현해보면 좋을 것 같다.
  • 아직도 프로미스와 async await를 제대로 이해하지 못한 것 같다. 그냥 정형화된 형태가 있으니 그것을 사용해야겠다 하고 외웠다. 이해하고 프로미스와 async await를 자유자재로 쓰는 날이 왔으면좋겠다. callback 함수도 아직 뭔지 잘 모르겠다. ㅠㅠ 콜백 지옥이 뭔지 제대로 이해하고 싶다. 나는 함수에 약한가 보다.
  • 오늘은 개발자 도구를 처음으로 의미 있게 사용해봤다.
  • 오류가 떴을 경우 어떻게 고쳐야 되는지 조금씩 감이 잡힌다. 도움 없이 스스로 고쳐본 것은 오늘이 처음인 것 같다.
  • RESTAPI가 점점 익숙해진다.

'TIL' 카테고리의 다른 글

20210704 [항해 28일 차]  (0) 2021.07.04
20210703 [항해 27일 차] 빗나감  (0) 2021.07.04
20210701 [항해 25일 차]  (0) 2021.07.02
20210630 [항해 24일 차]  (0) 2021.07.01
20210629 [항해 23일 차]  (0) 2021.06.30