重要提示:该库不验证令牌,任何格式良好的 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
文件夹的根目录复制到项目的某个位置,然后在标有type="module"
的脚本标记内导入jwtDecode
:
< script type =" module " >
import { jwtDecode } from "/path/to/jwt-decode.js" ;
const token = "eyJhsw5c" ;
const decoded = jwtDecode ( token ) ;
</ script >
我们感谢对此存储库的反馈和贡献!在开始之前,请参阅以下内容:
要提供反馈或报告错误,请在我们的问题跟踪器上提出问题。
请不要在公共 GitHub 问题跟踪器上报告安全漏洞。负责任的披露计划详细说明了披露安全问题的程序。
Auth0是一个易于实施、适应性强的身份验证和授权平台。要了解更多信息,请查看为什么选择 Auth0?
该项目已获得 MIT 许可。有关详细信息,请参阅许可证文件。