介绍
JSON Web Token(JWT)是一种用于在网络上传递声明的开放标准。JWT 由三部分组成:头部、载荷和签名。头部和载荷都是 JSON 格式的数据,签名用于验证数据的完整性。JWT 可以用于身份验证和授权。
在 Node.js 中,可以使用第三方库来实现 JWT 认证,例如 jsonwebtoken。本文将介绍如何在 Node.js 中使用 jsonwebtoken 实现 JWT 认证。
安装
可以使用 npm 安装 jsonwebtoken:
npm install jsonwebtoken
生成 JWT
生成 JWT 需要传入一个 payload 对象和一个密钥。payload 对象可以包含任意数据,但不要包含敏感信息。密钥用于签名。
示例代码:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ------- - - ------- ------------- ----- ----- ---- -- ----- ------ - ----------- ----- ----- - ----------------- -------- -------------------
输出:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.1f8a4b9e9e7b9e8c2a62a20c11d3a3a3b8a3b3d3
验证 JWT
验证 JWT 需要传入一个 token 和一个密钥。如果 token 无效或已过期,将抛出异常。
示例代码:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ----- - --------------------------------------------------------------------------------------------------------------------------------------------------------------- ----- ------ - ----------- --- - ----- ------- - ----------------- -------- --------------------- - ----- ----- - ------------------- -
输出:
{ userId: '1234567890', name: 'John Doe', iat: 1516239022 }
将 JWT 存储在 Cookie 中
可以将 JWT 存储在 Cookie 中,以便在客户端和服务器之间传递认证信息。
示例代码:
-- -------------------- ---- ------- ----- --- - ------------------------ ----- ------- - ------------------- ----- ------------ - ------------------------- ----- --- - ---------- ------------------------ ----------------- ----- ---- -- - ----- ------- - - ------- ------------- ----- ----- ---- -- ----- ------ - ----------- ----- ----- - ----------------- -------- ------------------- ------ - --------- ---- --- ---------------- ----- --- --------------------- ----- ---- -- - ----- ------ - ----------- --- - ----- ----- - ------------------ ----- ------- - ----------------- -------- --------------- ------------------ - ----- ----- - -------------------- - --- ---------------- -- -- ------------------- -----------
在浏览器中访问 http://localhost:3000/login,然后访问 http://localhost:3000/protected,将显示 Hello John Doe。
结论
JWT 是一种方便且安全的身份验证和授权方法。在 Node.js 中,可以使用 jsonwebtoken 库来实现 JWT 认证。本文介绍了如何生成和验证 JWT,以及如何将 JWT 存储在 Cookie 中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/673d63efde2dedaeef39d2de