Express.js 中使用 JWT 进行用户认证的教程

阅读时长 5 分钟读完

JWT(JSON Web Token)是一种用于身份认证的安全协议,它使用 JSON 对象作为身份验证的安全凭证。在前端开发中,我们经常需要对用户进行身份认证,而 JWT 正好可以帮助我们实现这一需求。本文将介绍如何在 Express.js 中使用 JWT 进行用户认证。

什么是 JWT?

JWT 是一种基于 JSON 的开放标准,用于在网络应用中传递声明。JWT 可以使用 HMAC 算法或 RSA 的公钥/私钥对进行签名,从而保证了信息不被篡改。JWT 由三部分组成,分别是头部、载荷和签名。

头部包含了加密算法和 token 类型等信息,载荷包含了需要传递的信息,签名则是将头部和载荷进行加密后的结果,用于验证 token 的合法性。

在 Express.js 中使用 JWT 进行用户认证

在 Express.js 中使用 JWT 进行用户认证,我们需要用到两个库,分别是 jsonwebtoken 和 express-jwt。其中,jsonwebtoken 用于生成和验证 JWT,而 express-jwt 则是 Express.js 的中间件,用于验证 JWT 是否有效。

安装依赖

在开始之前,我们需要先安装 jsonwebtoken 和 express-jwt 两个库:

生成 JWT

在用户登录成功后,我们需要生成一个 JWT,并将其发送给客户端。在 Express.js 中,我们可以使用 jsonwebtoken 库来生成 JWT:

上述代码中,我们传递了三个参数给 jwt.sign() 方法:

  • 第一个参数是需要传递的信息,这里我们传递了一个对象,包含了用户名;
  • 第二个参数是秘钥,用于加密 JWT;
  • 第三个参数是一个可选参数,用于设置 JWT 的过期时间。

验证 JWT

在客户端发送请求时,我们需要在请求头中携带 JWT,以便服务器进行验证。在 Express.js 中,我们可以使用 express-jwt 中间件来验证 JWT 是否有效:

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

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

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

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

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

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

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

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

上述代码中,我们使用了 express-jwt 中间件来验证 JWT 是否有效。我们将其作为中间件使用,并设置了秘钥和算法。同时,我们还设置了一个 unless() 方法,用于排除某些路径不进行 JWT 验证。

在登录请求中,我们验证了用户名和密码后,生成了一个 JWT,并将其发送给客户端。在受保护的请求中,我们使用了 express-jwt 中间件来验证 JWT 是否有效。如果 JWT 验证成功,我们将返回一个受保护的资源。

总结

在本文中,我们介绍了 JWT 的概念,并详细介绍了如何在 Express.js 中使用 JWT 进行用户认证。使用 JWT 可以帮助我们实现安全的身份认证,同时也可以避免一些安全问题。希望本文对你有所帮助!

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

纠错
反馈