在 Express.js 中实现基于 JSON Web Token 的身份验证

随着 Web 应用程序的发展,安全性变得越来越重要。在用户登录和访问敏感信息时,需要对用户进行身份验证。JSON Web Token(JWT)是一种常用的身份验证方法,它使用 JSON 格式的数据进行身份验证和授权。在本文中,我们将探讨如何在 Express.js 中实现基于 JWT 的身份验证。

什么是 JSON Web Token(JWT)?

JSON Web Token(JWT)是一种基于 JSON 的开放标准,用于在网络应用程序之间安全地传输信息。JWT 由三部分组成:头部、载荷和签名。头部包含使用的算法和令牌类型,载荷包含有关用户的信息,如用户名和权限等,签名用于验证令牌是否被篡改。JWT 可以使用 HMAC 算法或 RSA 算法进行签名。使用 JWT 进行身份验证的过程如下:

  1. 用户发送登录请求并提供凭据
  2. 服务器验证凭据并生成 JWT
  3. 服务器将 JWT 发送回客户端
  4. 客户端将 JWT 存储在本地,以备将来使用
  5. 客户端在每个请求中将 JWT 发送回服务器
  6. 服务器验证 JWT 并响应请求

在 Express.js 中实现基于 JWT 的身份验证

在 Express.js 中实现基于 JWT 的身份验证需要安装 jsonwebtoken 模块。jsonwebtoken 可以用于生成和验证 JWT。首先,我们需要创建一个登录端点,用于验证用户凭据并生成 JWT。下面是一个示例代码:

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

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

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

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

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

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

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

在上面的示例中,我们首先使用 require 导入 jsonwebtoken 模块和 express 模块。然后,我们创建一个 users 数组,其中包含两个用户。接下来,我们创建一个 /login 端点,用于验证用户凭据并生成 JWT。在 POST 请求中,我们从请求正文中获取用户名和密码,然后查找匹配的用户。如果找不到匹配的用户,我们返回 401 状态码并发送错误消息。如果找到匹配的用户,我们使用 jsonwebtokensign 方法生成 JWT,并将其发送回客户端。

接下来,我们需要创建一个受保护的端点,用于验证 JWT。下面是一个示例代码:

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

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

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

在上面的示例中,我们创建一个 /protected 端点,用于验证 JWT。在请求中,我们从请求头中获取 JWT,并使用 jsonwebtokenverify 方法验证 JWT。如果 JWT 验证成功,我们将解码后的用户信息存储在请求对象中,并调用 next 函数。如果 JWT 验证失败,我们返回 401 状态码并发送错误消息。在下一个中间件函数中,我们使用存储在请求对象中的用户信息向客户端发送消息。

总结

在本文中,我们探讨了如何在 Express.js 中实现基于 JWT 的身份验证。我们首先了解了 JWT 的基本概念和使用方法,然后通过示例代码演示了如何在 Express.js 中实现基于 JWT 的身份验证。希望本文能够对您有所帮助,让您更好地理解和应用 JWT。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/660c0518d10417a222c409a7