Node.js/[챕터1]

#12 토큰 생성 with jsonwebtoken

Dev갱이 2021. 6. 7. 23:59
728x90

[3] 비밀번호까지 맞다면 토큰을 생성하기.

-jwt 토큰 라이브러리 다운로드

npm install jsonwebtoken --save
npm install cookie-parser --save
index.js

//2.요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인.
    user.comparePassword(req.body.password , (err, isMatch ) => {
      if(!isMatch)
      return res.json({ loginSuccess : false, message : "비밀번호가 틀렸습니다."})

      //3.비밀번호 까지 맞다면 토큰을 생성하기.
      user.generateToken((err,user) => {
        if(err) return res.status(400).send(err);

        // 토큰을 저장한다. 어디에 ?  쿠키, 로컬스토리지
        res.cookie("x_auth",user.token)
        .status(200)
        .json({ loginSuccess : true, userId: user._id })
      })

    })

 

generateToken이란 함수를 만들었으니 모델쪽으로 가서 

models/User.js

const jwt = require('jsonwebtoken');
추가하고

userSchema.methods.generateToken = function (cb){
    let user = this;

    //jsonwebtoken을 이용해서 token을 생성하기
    let token = jwt.sign(user._id.toHexString(), 'secretToken');

    user.token = token;
    user.save(function(err, user){
        if(err) return cb(err)
        cb(null, user)
    })
}

toHexString() 안하면 오류남

토큰을 생성하고 그것을 리턴한다.

 

index.js에서 쿠키 파서 모듈을 이용하여 x_auth라는 쿠키를 생성

 

728x90