토큰 발급하기
- 라이브러리 설치
npm i jsonwebtoken
- 토큰을 인증하기위한 비밀 키가 필요하다
//.env
PORT = 3000
JWT_SECRET="MySecretKey" //시크릿키
JWT_EXPIRE="48h" // 유효기간
JWT_SUBJECT="" // 토큰 제목
JWT_ISSUER="" //발급자
- 첫번째 파라미터(토큰에 넣을 데이터) 두번째(시크릿키), 세번째(옵션), 네번째(콜백함수)
const jwt = require('jsonwebtoken');
const token = jwt.sign({ foo: 'bar' }, 'secret-key', { expiresIn: '7d' }, (err, token) => {
if(err) {
console.log(err);
return;
}
console.log(token);
});
const jwtSecret = process.env.JWT_SECRET;
const jwt = require('jsonwebtoken');
function _JWT(secret) {
if (!(this instanceof _JWT)) {
return new _JWT(secret);
}
this.secret = secret;
}
_JWT.prototype.register = function (payload) {
return new Promise((resolve, reject) => {
jwt.sign(
payload,
this.jwtSecret,
{
expiresIn: process.env.JWT_EXPIRE,
issuer: process.env.JWT_ISSUER,
subject: process.env.JWT_SUBJECT,
}, (error, token) => {
if(error) reject(error);
resolve(token);
}
);
}
);
};
_JWT.prototype.verify = function (token) {
return new Promise((resolve, reject) => {
jwt.verify(token, this.secret, (err, decoded) => {
if (err) reject(err);
resolve(decoded);
});
});
};
exports.generateToken = generateToken;