Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- express
- MySQL
- Node
- 프로그래머스
- useReducer
- elasticIP
- interactive_timeout
- prettier
- react
- .env
- 제일 작은 수 제거하기
- max_allowed_packet
- 프리티어
- AWS
- next #middleware
- 커밋 한번에
- 자동완성방지
- vscode
- 코딩테스트
- 리액트
- EC2
- reacts3
- axios
- s3확장자
- 자연수 뒤집어 배열로 만들기
- utf8mb4
- dotenv
- 리액트코드정렬
- 부족한 금액 계산하기
- 코드정렬
Archives
- Today
- Total
Sungtt
[Next.js@13] jwt 라이브러리, jsonwebtoken 대신 jose 본문
[Next.js@13] jsonwebtoken 대신 jose
Next.js에서 jwt를 생성할 때 늘 쓰던 jsonwebtoken 모듈을 시도했다.
결과는 오류! 공식 문서에 따르면 Edge 런타임은 모든 Node.js API를 지원하진 않는다고 알려준다.
error - Error: The edge runtime does not support Node.js 'buffer' module.
jose
그래서 대체 모듈을 찾다가 jose 라는 모듈을 찾았다. 해당 모듈은 종속성없이 작동한다.
내부에 각 모듈들은 독립적이기에 트리쉐이킹도 가능하다고한다.
지원 목록을 보면 맨 아래에 당당하게 Vercel이 있다.
현재 jwt 생성과 복호화를 jose를 통해 모듈화시켜서 사용하고있다.
import { JWTPayload, jwtVerify, SignJWT } from 'jose';
export const createJoseAccessToken = async (id: string): Promise<string> => {
//시크릿키 생성
const secret = new TextEncoder().encode(process.env.SECRET_TOKEN);
//알고리즘 선택
const alg = process.env.JWT_ALG as string;
const jwt = await new SignJWT({ id }).setProtectedHeader({ alg }).setIssuedAt().setExpirationTime('1s').sign(secret);
return jwt;
};
export const verifyJoseToken = async (token: string): Promise<JWTPayload | null> => {
const secret = new TextEncoder().encode(process.env.SECRET_TOKEN);
try {
const { payload } = await jwtVerify(token, secret);
return payload;
} catch (err) {
return null;
}
};
export default createJoseAccessToken;
Next에서 jsonwebtoken 사용으로 헤매고있다면 이 모듈도 추천..
- npm
https://www.npmjs.com/package/jose?activeTab=readme
jose
'JSON Web Almost Everything' - JWA, JWS, JWE, JWT, JWK, JWKS for Node.js, Browser, Cloudflare Workers, Deno, Bun, and other Web-interoperable runtimes. Latest version: 4.11.1, last published: a month ago. Start using jose in your project by running `npm i
www.npmjs.com
'React' 카테고리의 다른 글
[Next.js@13] 버셀로 배포 시 통신 속도 향상시키는 법 (0) | 2023.01.07 |
---|---|
주소(URL)에서 패스,쿼리스트링 추출하기 (0) | 2022.12.27 |
[Next.js@13] redirect와 cookie 설정 한번에 하기 (0) | 2022.12.27 |
[Next.js@13] Next + RTK 적용중 오류...Prefer to use the callback notation for the middleware option in configureStore to access a pre-typed getDefaultMiddleware instead. (0) | 2022.12.24 |
[Next.js@13] Next에서 mysql 연동하기 (0) | 2022.12.22 |
Comments