重要提示:該庫不驗證令牌,任何格式良好的 JWT 都可以解碼。您應該使用express-jwt、koa-jwt、Microsoft.AspNetCore.Authentication.JwtBearer 等來驗證伺服器端邏輯中的令牌。
文件 - 入門 - 回饋
使用 NPM 或 Yarn 安裝。
執行npm install jwt-decode
或yarn add jwt-decode
來安裝函式庫。
import { jwtDecode } from "jwt-decode" ;
const token = "eyJ0eXAiO.../// jwt token" ;
const decoded = jwtDecode ( token ) ;
console . log ( decoded ) ;
/* prints:
* {
* foo: "bar",
* exp: 1393286893,
* iat: 1393268893
* }
*/
// decode header by passing in options (useful for when you need `kid` to verify a JWT):
const decodedHeader = jwtDecode ( token , { header : true } ) ;
console . log ( decodedHeader ) ;
/* prints:
* {
* typ: "JWT",
* alg: "HS256"
* }
*/
注意:虛假或格式錯誤的令牌將引發InvalidTokenError
錯誤;有關特定錯誤的更多信息,請參閱下文。
該函式庫依賴atob()
,這是所有現代瀏覽器以及每個支援的節點環境上可用的全域函數。
為了在無法存取atob()
環境(例如 React Native)中使用jwt-decode
,請確保使用core-js/stable/atob
在應用程式中提供相應的 polyfill:
import "core-js/stable/atob" ;
或者,您也可以自己使用base-64
和 polyfill global.atob
:
import { decode } from "base-64" ;
global . atob = decode ;
該庫適用於有效的 JSON Web 令牌。這些令牌的基本格式是
[part1].[part2].[part3]
所有部分都應該是有效的 base64 (url) 編碼的 json。根據{ header: <option> }
選項,它將解碼第 1 部分(僅當指定 header: true 時)或第 2 部分(預設)
不遵守格式將導致InvalidTokenError
並顯示下列訊息之一:
Invalid token specified: must be a string
=> 傳遞的令牌不是字串,該函式庫僅適用於字串。Invalid token specified: missing part #
=> 這可能表示您在令牌中缺少一個點 ( .
)Invalid token specified: invalid base64 for part #
=>該部分無法進行base64解碼(訊息應包含base64解碼器給出的錯誤)Invalid token specified: invalid json for part #
=> 該部分已正確進行 Base64 解碼,但是,解碼後的值不是有效的 JSON(訊息應包含 JSON 解析器給出的錯誤) jwtDecode
函數的傳回類型由作為第二個參數傳遞的物件的header
屬性決定。如果省略(或設為 false),它將使用JwtPayload
,如果為 true ,它將使用JwtHeader
。如果需要,您可以透過將類型參數傳遞給jwtDecode
函數來指定預期的傳回類型。
您可以擴展JwtHeader
和JwtPayload
以包含非標準聲明或屬性。
import { jwtDecode } from "jwt-decode" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode < JwtPayload > ( token ) ; // Returns with the JwtPayload type
const { jwtDecode } = require ( 'jwt-decode' ) ;
...
將檔案jwt-decode.js
從build/esm
資料夾的根目錄複製到專案的某個位置,然後從其中匯入jwtDecode
到標有type="module"
的腳本標記內:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
我們感謝對此存儲庫的反饋和貢獻!在開始之前,請參閱以下內容:
若要提供回饋或報告錯誤,請在我們的問題追蹤器上提出問題。
請不要在公共 GitHub 問題追蹤器上報告安全漏洞。負責任的揭露計劃詳細說明了揭露安全問題的程序。
Auth0是一個易於實施、適應性強的身份驗證和授權平台。要了解更多信息,請查看為什麼選擇 Auth0?
該專案已獲得 MIT 許可。有關詳細信息,請參閱許可證文件。