Node.js 中的 JSON Web Token(JWT)认证实现方法

介绍

JSON Web Token(JWT)是一种用于在网络上传递声明的开放标准。JWT 由三部分组成:头部、载荷和签名。头部和载荷都是 JSON 格式的数据,签名用于验证数据的完整性。JWT 可以用于身份验证和授权。

在 Node.js 中,可以使用第三方库来实现 JWT 认证,例如 jsonwebtoken。本文将介绍如何在 Node.js 中使用 jsonwebtoken 实现 JWT 认证。

安装

可以使用 npm 安装 jsonwebtoken:

--- ------- ------------

生成 JWT

生成 JWT 需要传入一个 payload 对象和一个密钥。payload 对象可以包含任意数据,但不要包含敏感信息。密钥用于签名。

示例代码:

----- --- - ------------------------

----- ------- - -
  ------- -------------
  ----- ----- ----
--

----- ------ - -----------

----- ----- - ----------------- --------

-------------------

输出:

------------------------------------------------------------------------------------------------------------------------------------------------------------

验证 JWT

验证 JWT 需要传入一个 token 和一个密钥。如果 token 无效或已过期,将抛出异常。

示例代码:

----- --- - ------------------------

----- ----- - ---------------------------------------------------------------------------------------------------------------------------------------------------------------

----- ------ - -----------

--- -
  ----- ------- - ----------------- --------
  ---------------------
- ----- ----- -
  -------------------
-

输出:

- ------- ------------- ----- ----- ----- ---- ---------- -

将 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