使用 Express.js 进行身份验证

介绍

在前端开发中,身份验证是非常重要的一步。使用 Express.js 可以方便地进行身份验证,并且可以大大减少编写身份验证相关代码的工作量。Express.js 是一个基于 Node.js 平台的开放式、最小化的 Web 开发框架,它使用了 Node.js 中的 http 模块,并通过中间件扩展了 Web 应用程序的功能。

在这篇文章中,我们将介绍如何使用 Express.js 进行身份验证,包括如何设置登录、注册和注销功能,以及如何控制用户访问权限等。

登录功能

要实现登录功能,我们需要一个用于检查用户名和密码的数据库。我们可以使用 MongoDB 来存储用户信息,通过 Mongoose 来操作数据库。

安装 MongoDB 和 Mongoose

可以在上面 MongoDB 的官网下载所需要的安装包,安装完成后,再通过 npm 命令安装 Mongoose。

npm install mongoose

创建 Mongoose 模型

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

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

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

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

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

创建登录路由

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

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

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

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

我们使用 Passport.js 来进行身份验证。Passport.js 是一个可插拔的身份验证中间件,它支持多种身份验证策略,包括本地身份验证、OAuth、OpenID 等。

创建 Passport.js 策略

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

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

注册功能

当用户要注册新账户时,需要执行以下操作:

  1. 检查用户名是否存在。如果存在,返回错误信息;
  2. 加密密码并将用户名和加密后的密码存入数据库中。

创建注册路由

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

创建 Passport.js 策略

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

注销功能

当用户注销时,需要执行以下操作:

  1. 销毁用户的会话信息;
  2. 重定向到主页。

创建注销路由

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

用户访问权限控制

在某些情况下,我们需要限制某些页面只允许已登录的用户访问。我们可以使用 Middleware 中间件实现该功能。

下面的示例演示了如何限制只允许已登录的用户访问特定页面。

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

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

结论

在这篇文章中,我们介绍了如何使用 Express.js 和 Passport.js 实现身份验证。我们还演示了如何完成登录、注册、注销以及用户访问权限控制功能,并展示了示例代码。希望这篇文章对前端开发者对身份验证相关的技术有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670b8c50d91dce0dc88b2c6a