jsonwebtoken 패키지 설치
npm i jsonwebtoken
토큰 발급
const jwt = require("jsonwebtoken");
// es 쓰는 경우
import jwt from "jsonwebtoken";
const token = jwt.sign({ email: "test@user.com" }, "secret_value");
console.log(token); // 로그를 찍어보면 eyJ로 시작하는 긴 문자열이 출력되는데, 이 값이 발급받은 토큰
토큰 검증
- jsonwebtoken 에서 제공하는 verify() 함수를 사용하여 검증한다.
- 첫번째 인자로는 토큰 문자열을 받고, 두번째 인자로는 sign() 함수와 동일하게 키를 받는다.
const token = jwt.sign({ email: "test@user.com" }, "secret_value");
const verified = jwt.verify(token, "secret_value");
console.log(verified); // { email: 'test@user.com', iat: 1678920125 }
위의 로그처럼 JWT 토큰에 부가적으로 저장되는 메타 데이터를 클레임(claim)이라고 한다.
iat 클레임은 해당 토큰이 발급된 시각에 대한 유닉스(Unix) 타임스탬프(timestamp)로 담고 있다.
토큰 읽기
- jsonwebtoken에서 제공하는 decode() 함수를 사용하여 읽을 수 있다.
- 토큰이 만료되어도 JSON 데이터 출력된다.
- 페이로드뿐만 아니라 헤더와 서명까지 읽고 싶다면 decode() 함수의 두 번째 인자를 통해서 complete 옵션을 true로 주면 된다.
const token = jwt.sign({ email: "test@user.com" }, "secret_value", {
expiresIn: "1s",
});
await new Promise((r) => setTimeout(r, 1000));
const decoded = jwt.decode(token);
console.log(decoded); // { email: 'test@user.com', iat: 1678923334, exp: 1678923335 }
참고
- https://www.daleseo.com/js-jwt/
'JavaScript&TypeScript' 카테고리의 다른 글
JavaScript console.time() (0) | 2023.05.12 |
---|---|
JavaScript console.table() (0) | 2023.05.12 |
JavaScript 배열 자르기 (0) | 2023.03.29 |
JavaScript 배열 중간에 요소 추가 및 삭제 (0) | 2023.03.29 |
JavaScript로 GCS에 파일 업로드 및 다운로드 (0) | 2023.03.17 |