Node.js 中如何使用 JWT 进行用户认证?

阅读时长 4 分钟读完

什么是 JWT?

JWT(JSON Web Token)是一种用于标识认证信息的格式。它是由三段信息组成,分别是 Header、Payload 和 Signature,其中 Header 和 Payload 部分使用 Base64 进行编码,Signature 是使用 Base64 函数和密钥对前两部分生成的字符串。

JWT 的使用场景

JWT 可以用于对用户进行认证,实现无状态的身份验证,也可以被用于 Web 应用程序间的信任关系。具有相对安全、易于传输、可扩展、标准化等特点。

JWT 的实现

首先,我们需要安装用于生成 JWT 的依赖包 jsonwebtoken,使用以下命令:

1. 生成 JWT

Node.js 中生成 JWT 的方法如下:

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

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

在这里,我们生成了一个 JWT,其中包含了用户 ID 和用户名的信息,以及 JWT 的过期时间。生成 JWT 的方法是 jwt.sign(),第一个参数传递的是包含了需要在 JWT 中携带的数据和过期时间的 JSON 对象,第二个参数是我们设置的密钥。

2. 验证 JWT

在实际使用 JWT 进行身份验证的时候,需要先将前端传递的 JWT 解析出来,再与数据库中存储的数据进行比较,从而验证 JWT 是否有效。具体的代码实现如下:

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

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

3. 设置 JWT 头部信息

JWT 头部信息中需要设置算法名称和密钥等信息,Node.js 中设置 JWT 头部信息的方法如下:

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

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

总结

本文介绍了 JWT 的基本概念、使用场景、实现方法以及在 Node.js 中使用 JWT 进行用户认证的方法。通过本文的学习,我们可以了解到如何生成 JWT、验证 JWT,并设置 JWT 的头部信息。希望本文对大家有所帮助!

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

纠错
反馈