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