Express.js 中使用 JSON Web Token 的详细步骤

在现代的 Web 应用程序中,用户认证和授权是必不可少的部分。JSON Web Token(JWT)是一种用于在网络应用程序之间安全传递信息的开放标准。它可以在用户和服务器之间传递安全的信息,以验证用户的身份并授权访问特定的资源。本文将介绍如何在 Express.js 中使用 JWT 实现用户认证和授权。

什么是 JSON Web Token?

JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为 JSON 对象安全地传输信息。JWT 可以使用任何编程语言进行编写,且无需使用数据库。JWT 由三部分组成:头部、载荷和签名。头部包含加密算法和类型信息,载荷包含用户信息和其他元数据,签名用于验证 JWT 是否被篡改。

步骤

以下是在 Express.js 中使用 JWT 的详细步骤:

1. 安装依赖

使用 npm 安装 jsonwebtoken 和 express-jwt:

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

jsonwebtoken 用于创建和验证 JWT,express-jwt 用于验证 JWT 和检查用户是否已登录。

2. 创建 JWT

在服务器端,您需要创建 JWT 并将其发送给客户端。以下是创建 JWT 的示例代码:

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

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

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

在此代码中,payload 是要添加到 JWT 载荷中的信息,secret 是用于签名 JWT 的密钥。expiresIn 选项指定 JWT 的过期时间。

3. 验证 JWT

在客户端发送请求时,您需要验证 JWT 是否有效。以下是使用 express-jwt 验证 JWT 的示例代码:

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

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

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

在此代码中,secret 是用于签名 JWT 的密钥。expressJwt 中间件将验证 JWT 是否有效,并将 req.user 设置为 JWT 载荷中的信息。

4. 检查用户登录状态

在某些情况下,您需要检查用户是否已登录,然后才能授予对某些资源的访问权限。以下是使用 express-jwt 检查用户登录状态的示例代码:

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

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

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

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

在此代码中,如果 req.user 未定义,则表示用户未登录,因此返回 401 状态码。否则,用户已登录,可以授予对该资源的访问权限。

总结

本文介绍了在 Express.js 中使用 JWT 实现用户认证和授权的详细步骤。JWT 是一种安全的方式,用于在网络应用程序之间传递信息,以验证用户的身份并授权访问特定的资源。通过遵循本文中的步骤,您可以轻松地在 Express.js 中使用 JWT 实现用户认证和授权。

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