使用 Express.js 和 JWT 保护 RESTful API

阅读时长 5 分钟读完

在开发 Web 应用程序时,保护您的 API 不受未经授权的访问是至​​关重要的。Express.js 是一个受欢迎的 Node.js 框架,它可以帮助您构建 RESTful API。在本文中,我们将学习如何使用 Express.js 和 JWT 来保护 RESTful API。

什么是 JWT?

JWT(JSON Web Tokens)是一种用于安全地传输信息的开放标准。它包含一系列声明,可以使用任何编程语言轻松解释。 JWT 是使用 HMAC 算法或RSA/ECDSA签名的 JSON Web Token,特点在于它自包含,即信息自身携带了足够的数据,避免了多服务器间的共享信息问题,而每个接口请求都带有 Token,从而通知服务器该请求来源具备访问权限。

创建 Express.js 应用程序

在开始使用 Express.js 和 JWT 之前,我们需要创建一个基本的 Express.js 应用程序。可以使用下面的命令安装 Express.js:

启动 Node.js REPL 并导入 Express.js:

我们可以使用下面的代码为我们的应用程序创建一个路由:

现在在浏览器中访问 http://localhost:3000/,您将看到“Hello World!”消息。

使用 JWT 保护 API

现在我们已经了解了如何创建一个基本的 Express.js 应用程序,让我们开始学习如何使用 JWT 来保护 RESTful API。首先,我们需要为我们的应用程序安装两个依赖项,jsonwebtoken 和 express-jwt:

import or require jwt

import or require express-jwt

现在,我们可以创建一个 JWT 并将其分配给用户。我们可以使用下面的代码为我们的应用程序创建一个路由,该路由将返回分配给用户的 JWT:

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

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

在上面的代码中,我们使用 jsonwebtoken 库生成一个 JWT 并将其返回给用户。请注意,我们在生成令牌时使用了一个密钥(本例中为“secret_key”)。该密钥应保持机密,并仅在服务器端使用。

现在,我们已经成功创建了 JWT 并将其返回给用户,让我们创建一个需要 JWT 认证的路由。为此,我们需要使用 express-jwt 中间件。

现在,我们已经成功创建了需要 JWT 认证的路由。每当用户尝试访问该路由时,express-jwt 中间件将验证 JWT 的有效性,并在该令牌未过期且包含有效签名的情况下通过该路由。请注意,我们使用相同的密钥(“secret_key”)来验证令牌。

完整示例代码

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

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

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

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

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

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

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

结论

在本文中,我们学习了如何使用 Express.js 和 JWT 来保护 RESTful API。我们可以创建一个 JWT 并将其分配给用户,并使用 express-jwt 中间件来保护需要 JWT 认证的路由。此外,我们还了解了一些 JWT 的基本原理。现在,您可以安全地保护您的 API 不受未经授权的访问。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f4dbd0c5c563ced5660a76

纠错
反馈