Mongoose 和 Express 集成 JWT 鉴权的实现步骤

阅读时长 5 分钟读完

什么是 JWT 鉴权

JWT(JSON Web Token)是一种用于身份验证的开放标准,它可以在网络应用程序之间安全地传输声明。JWT 由三部分组成,分别是 Header、Payload 和 Signature。其中 Header 和 Payload 部分是 Base64 编码的 JSON 对象,Signature 部分是使用 Header、Payload 和密钥进行加密生成的字符串。

在前后端分离的应用中,前端通常会使用 JWT 来进行用户身份验证。当用户登录时,后端会生成一个 JWT 并返回给前端,前端将 JWT 存储在本地,每次请求时将 JWT 放入请求 Header 中,后端会根据 JWT 中的信息进行身份验证。

1. 安装依赖

首先需要安装以下依赖:

  • express:用于构建 web 应用程序
  • mongoose:用于操作 MongoDB 数据库
  • jsonwebtoken:用于生成和验证 JWT

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

2. 构建用户模型

在 MongoDB 数据库中创建一个名为 users 的集合,用于存储用户数据。然后可以使用 Mongoose 构建用户模型,代码如下:

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

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

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

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

3. 注册和登录接口

在 Express 中编写注册和登录接口,代码如下:

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

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

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

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

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

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

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

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

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

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

4. 鉴权中间件

编写一个鉴权中间件,用于验证请求中的 JWT 是否有效。代码如下:

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

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

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

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

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

5. 鉴权保护的接口

在 Express 中编写一个需要鉴权保护的接口,代码如下:

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

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

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

-- -------

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

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

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

总结

本文介绍了如何使用 Mongoose 和 Express 集成 JWT 鉴权。需要注意的是,JWT 只是一种验证方式,不能替代 HTTPS。在实际开发中,需要根据具体情况选择适合的验证方式。

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

纠错
反馈