JSON Web Token(JWT)是一种用于身份验证和授权的开放标准。JWT 由三部分组成:头部、载荷和签名。其中,载荷存储了用户的信息,签名用于验证 JWT 的合法性。在实际应用中,我们通常需要设置 JWT 的过期时间,以确保用户的安全性。本文将介绍如何使用 Express.js 实现 JWT 的过期时间管理。
1. 安装依赖
在开始之前,我们需要安装以下依赖:
- express:用于创建 Web 服务器
- jsonwebtoken:用于生成和验证 JWT
- body-parser:用于解析 HTTP 请求体
可以使用以下命令进行安装:
npm install express jsonwebtoken body-parser --save
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