Express.js 中使用 JWT 实现 token 认证

阅读时长 4 分钟读完

在当今的 Web 应用中,绝大多数都需要认证和授权功能来保证安全性和信息更好的隐私保护。在前端开发中,我们经常需要与后端交互来实现这些功能。本文将介绍如何在 Express.js 中使用 JWT 实现 token 认证的功能。

什么是 JWT?

JWT(JSON Web Token)是一种基于 JSON 的开放标准(RFC 7519),用于在网络应用程序中传递声明。这些声明可以用于访问控制(Authorization)和身份验证(Authentication)。JWT 通常用在需要在不同的系统或者服务中共享认证信息的情况下。

JWT 由三部分组成:Header、Payload 和 Signature。Header 和 Payload 都是以 JSON 对象表示,其中 Header 指定了签名算法和其他参数,Payload 包含了 JWT 所代表的信息,例如用户 ID、角色等等。Signature 部分用于验证历程数据的完整性。

使用 JWT 进行认证

在 Express.js 中使用 JWT 进行认证的核心是,通过 payload 中的信息生成 token,并将这个 token 通过响应的方式发送给客户端。之后,客户端在发送请求时需要将这个 token 通过头部信息(例如 Authorization)的形式发送到服务器上,服务器在接收到请求后需要验证请求中的 token 是否正确,如果正确,则进行相关的操作。

安装 JWT 相关的模块

在 Express.js 中使用 JWT 进行认证需要使用到以下两个模块:

  • jsonwebtoken:用于生成和验证 token
  • express-jwt:用于在 Express 应用中验证 token

可以通过以下命令安装:

生成 token

在 Express.js 应用中生成 token 非常简单。我们可以写一个路由来处理向客户端发送 token:

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

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

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

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

这段代码中,我们用 jsonwebtoken 中的 sign 方法根据用户信息生成一个 token。其中,第一个参数是一个 JSON 对象,用于指定 token 中包含的信息,例如用户 ID。第二个参数是一个加密的字符串,用于生成数字签名,用来验证 token 是否被修改过。第三个参数是一个选项对象,用于指定 token 的过期时间。

验证 token

在 Express.js 应用中验证 token 需要使用 express-jwt 模块。我们可以编写一个中间件来处理需要认证的请求:

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

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

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

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

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

这段代码中,我们先定义了一个 secret 字符串用于验证 token 的数字签名。接着,使用 express-jwt 中间件的时候传入 secret,然后使用 authenticate 中间件来处理所有需要认证的请求。如果 token 验证通过,请求会被传递到路由处理函数中,否则会返回 401 Unauthorized 状态码。

至此,我们就完成了 Express.js 中使用 JWT 实现 token 认证的功能。

总结

本文介绍了如何在 Express.js 中使用 JWT 实现 token 认证的功能。我们从什么是 JWT 开始,到安装相关模块、生成 token 和验证 token,详细讲解了每一个步骤。在实践中,我们需要注意 token 的安全性和时效性,避免 token 信息泄漏和盗用。希望这篇文章能够帮助你理解 JWT 和 token 认证的功能,并为你的开发带来帮助。

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

纠错
反馈