如何在 Node.js 中使用 JWT 进行用户身份验证?

引言

用户身份验证是现代应用程序开发中的常见操作。常规方法是在应用程序中使用传统的用户名和密码进行身份验证。然而,使用 JWT(JSON Web Token)进行身份验证是现代应用程序中越来越流行的选择之一。在本文中,我们将学习如何在 Node.js 中使用 JWT 进行用户身份验证。

JWT 简介

JSON Web Token(JWT)是用于在网络中传输信息的一种开放标准。它是一个基于 JSON 的安全令牌,可用于身份验证和授权。JWT 由三部分组成:头部,载荷和签名。头部和载荷都是 JSON 对象,而签名是使用头部,载荷以及密钥和签名算法计算出来的字符串。

实现用户身份验证

我们将在 Node.js 中使用一个简单的示例来说明如何使用 JWT 进行用户身份验证。我们将使用 Express.js web 框架、jsonwebtoken 和 body-parser 中间件来实现应用程序。

首先,我们需要创建一个常规的 Express.js 应用程序,并安装 body-parser 和 jsonwebtoken 模块:

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

我们需要创建一个名为 jwtAuth 的模块,其中包含用于认证的代码。下面是模块的内容:

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

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

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

在上面的代码中,我们将认证代码导出为 authenticate 函数,它会在每个需要身份验证的路由处理程序中使用。

现在我们将在 app.js 文件中使用 authenticate 函数对每个需要身份验证的路由进行保护:

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

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

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

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

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

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

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

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

在上面的代码中,我们创建了一个名为 login 的路由来处理用户登录请求。如果登录成功,则会生成一个 JWT 令牌并返回给客户端。我们还创建了一个名为 /protected 的路径,它需要身份验证才能访问。

在 /protected 路由处理程序中,我们使用 jwtAuth.authenticate 中间件函数对该路由进行保护。如果认证通过,则路由处理程序将发送一个 JSON 响应给客户端。

结论

在本文中,我们学习了如何在 Node.js 中使用 JWT 进行用户身份验证。我们介绍了 JWT 的基本概念,并提供了一个简单的示例来说明其应用程序。在实际应用程序中,您可能需要更多的安全措施来保护您的用户数据,但我们希望这篇文章为您提供了一个良好的起点。

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