API 參考

最後更新

本頁列出 JWTAuth 每個公開方法的簽章、行為與錯誤。

匯入

import { JWTAuth } from "@pardnchiu/jwt-auth";
// 或預設匯入
import JWTAuth from "@pardnchiu/jwt-auth";

JWTAuth 只有 static 方法,建構子為 private,不可 new。

方法

方法 簽章
init init(config: Config): Promise<void>
close close(): Promise<void>
CreateJWT CreateJWT(req: Request, res: Response, user: AuthData): Promise<TokenResult>
VerifyJWT VerifyJWT(req: Request, res: Response): Promise<VerifyResult>
RevokeJWT RevokeJWT(req: Request, res: Response, refresh_id?: string): Promise<void>
GetAuth GetAuth(auth: AuthData | number)

init

載入金鑰、補上 cookie 名稱預設值並連線 Redis。錯誤見設定。

close

中斷 Redis 連線並清空連線參考。中斷失敗時記錄並拋出。

CreateJWT

步驟 行為
1 計算指紋,產生 Refresh ID
2 以 ES256 簽發 Access Token,payload 為 id、name、email、thumbnail、level、role、scope(預設 [])、fp、refresh_id
3 寫入 refresh:<id>(version: 1),TTL 為 refreshTokenExpires
4 設定 Access 與 Refresh cookie

回傳 { token, refresh_id }。未初始化時拋出 JWTAuth not initialized. Call JWTAuth.init() first.。

VerifyJWT

驗證 Access Token,過期時自動續期並寫回 cookie 與 X-New-* header。除未初始化外不拋出,所有失敗以 VerifyResult 表示,對照見驗證結果;續期細節見 Refresh Token 輪替。

RevokeJWT

清除 cookie、縮短 Refresh 資料 TTL、把 Access Token 加入黑名單。refresh_id 參數優先於請求中的值。Redis 錯誤只記錄不拋出。不會撤銷的情況見 Token 撤銷。

GetAuth

把舊版 VerifyJWT() 的回傳值(AuthData 或 400/401)轉成 { ...data, isAuth, isError, isGuest }。

相關:型別

EN