728x90
📌 jsonwebtoken
jsonwebtoken은 json 웹 토큰을 편리하게 생성할 수 있는 패키지이다.
오늘(10월 12일)을 기준으로 700만건이 넘는 다운로드 수를 갖는 패키지이다.
📌 설치
아래 명령어로 설치할 수 있다.
npm i jsonwebtoken
📌 토큰 생성
토큰은 sign 메소드로 생성할 수 있다.
jwt.sign(payload, secretOrPrivateKey, [options, callback])
const jwt = require("jsonwebtoken");
const payload = {
id: user.id,
email: user.email,
username: user.username,
};
const secretKey = "secret";
const options = { expiresIn: "1h" };
const token = jwt.sign(payload, secretKey, options);
jwt.sign의 매개변수로 payload, secret key, option을 차례대로 넣어준다.
옵션에 expiresIn은 토큰의 만료시간이다.
📌 토큰의 유효성 확인
토큰은 verify 메소드로 유효성을 확인할 수 있다.
jwt.verify(token, secretKey, [options, callback])
jwt 유효성 검증을 미들웨어로 만들어서 jwt 인증이 필요한 API에 미들웨어로 등록
// auth.js
const jwt = require("jsonwebtoken");
exports.verifyToken = async (req, res, next) => {
try {
const [authType, authToken] = req.headers.authorization.split(" ");
req.decoded = jwt.verify(authToken, "secretKey");
return next();
} catch (error) {
if (error.name === "TokenExpiredError") {
return res.status(419).json({ code: 419, message: "토큰 만료" });
}
return res.status(401).json({ code: 401, message: "유효하지 않은 토큰" });
}
};
728x90
반응형
'Web > Node.js' 카테고리의 다른 글
[Node.js] Nodemailer로 이메일 전송하기 with Gmail (1) | 2021.10.19 |
---|---|
[Node.js] express-validator로 유효성 검증하기 (0) | 2021.10.16 |
[Node.js / Sequelize] created_at, updated_at 시간을 한국시간대로 표기하기 (0) | 2021.10.07 |
[Node.js] multer (0) | 2021.09.27 |
[Node.js] express-session (0) | 2021.09.23 |