如何使用 Express.js 实现 JWT 的过期时间管理

阅读时长 5 分钟读完

JSON Web Token(JWT)是一种用于身份验证和授权的开放标准。JWT 由三部分组成:头部、载荷和签名。其中,载荷存储了用户的信息,签名用于验证 JWT 的合法性。在实际应用中,我们通常需要设置 JWT 的过期时间,以确保用户的安全性。本文将介绍如何使用 Express.js 实现 JWT 的过期时间管理。

1. 安装依赖

在开始之前,我们需要安装以下依赖:

  • express:用于创建 Web 服务器
  • jsonwebtoken:用于生成和验证 JWT
  • body-parser:用于解析 HTTP 请求体

可以使用以下命令进行安装:

2. 创建 Express 应用

首先,我们需要创建一个 Express 应用。可以使用以下代码:

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

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

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

这段代码创建了一个 Express 应用,并使用 body-parser 中间件来解析 HTTP 请求体。应用监听 3000 端口,并在控制台输出信息。

3. 生成 JWT

接下来,我们需要编写一个路由处理程序,用于生成 JWT。可以使用以下代码:

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

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

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

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

这段代码创建了一个 POST 路由,用于处理用户登录请求。如果用户的用户名和密码验证通过,将生成一个包含用户名信息的 JWT,并将其返回给客户端。在这里,我们设置 JWT 的过期时间为 1 小时。

4. 验证 JWT

接下来,我们需要编写一个路由处理程序,用于验证 JWT。可以使用以下代码:

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

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

这段代码创建了一个 GET 路由,用于获取用户的个人资料。在这里,我们从 HTTP 请求头中获取 JWT,并尝试验证其合法性。如果 JWT 合法,则返回包含用户名信息的 JSON 响应;否则,返回 401 状态码。

5. 总结

本文介绍了如何使用 Express.js 实现 JWT 的过期时间管理。我们通过编写路由处理程序,生成和验证 JWT,并设置 JWT 的过期时间。这个过程可以应用到实际项目中,以确保用户的安全性。

完整代码如下:

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

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

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

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

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

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

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

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

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

纠错
反馈