JWT(JSON Web Token)란?
당사자간에 정보를 JSON 개체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준(RFC 7519)이다. 이 정보는 디지털 서명이되어 있으므로 확인하고 신뢰할 수 있다.
정보를 안전하게 전할 때 혹은 유저의 권한 같은 것을 체크하기 위해서 사용하는 모듈
JWT의 구조 - https://jwt.io/

JWT 사용법
npm i jsonwebtoken dotenv
서버를 실행할 파일에서 jwt를 요청하고, 로그인을 할 때 토큰을 생성해줘야한다.
const express = require("express");
const jwt = require("jsonwebtoken");
// jwt를 요청한다.
const app = express();
const port = 3000;
const secretKey = "secretKey";
// secretKey는 환경변수(.env)파일에 넣어야한다.
app.use(express.json());
// req.body 미들웨어
app.post("/login", (req, res) => {
const username = req.body.username;
const user = { user: username };
// jwt를 이용해서 Token 생성하기 payload + secret
const accessToken = jwt.sign(user, secretKey);
res.json({ accessToken });
});
// login 경로 들어가서 post 요청을 하면 jwt.sign()을
// 이용하여 accessToken을 생성한다.
app.listen(port, (req, res) => {
console.log("listening " + port);
});
jwt.sign(payload, secretKey, [options, callback])
payload: 토큰에 포함될 정보를 담은 객체이다. 주로 사용자 식별자, 권한, 유효기간 등의 정보가 포함된다.
secretKey: 비밀 키 또는 개인키
options: 토큰의 유효 기간 등을 설정
callback: 비동기 식으로 작동할 때 사용된다.
jwt.verify(token, secretKey, [options, callback])
token: 검증할 JWT 문자열
secretKey: 비밀 키 또는 공개 키
options: 토큰의 유효성을 검사하는 데 사용된다.
callback: 비동기 식으로 작동할 때 사용된다.