如何在 Node.js 中使用 Express 和 Passport 实现用户认证

阅读时长 7 分钟读完

在现代 Web 应用程序中,用户认证是一个必不可少的功能。Node.js 提供了多种工具和框架来实现用户认证,其中最流行的是 Express 和 Passport。本文将介绍如何使用 Express 和 Passport 来实现用户认证。

Express

Express 是一个流行的 Web 应用程序框架,它可以帮助你快速创建 Web 应用程序。Express 提供了许多有用的功能,包括路由、模板引擎、中间件等。在本文中,我们将使用 Express 来创建 Web 应用程序。

首先,我们需要安装 Express:

然后,我们可以创建一个 Express 应用程序:

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

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

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

这个应用程序监听 3000 端口,并且当用户访问根路径时,会返回 "Hello World!"。

Passport

Passport 是一个流行的身份验证中间件,它可以帮助我们实现用户认证功能。Passport 支持多种身份验证策略,包括本地验证、OAuth、OpenID 等。在本文中,我们将使用本地验证策略。

首先,我们需要安装 Passport 和本地验证策略:

然后,我们可以创建一个 Passport 实例:

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

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

这个 Passport 实例使用本地验证策略,并且在验证用户名和密码成功时,返回一个包含用户名的对象。

用户认证

现在,我们可以将 Express 和 Passport 结合起来,实现用户认证功能。首先,我们需要使用 Passport 中间件来初始化 Passport:

然后,我们可以创建一个登录页面,并在该页面中使用 Passport 来验证用户名和密码:

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

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

在这个示例中,我们创建了一个登录页面,用户可以在该页面中输入用户名和密码。当用户提交登录表单时,我们使用 Passport 中间件来验证用户名和密码。如果验证失败,用户将被重定向到登录页面;如果验证成功,用户将被重定向到主页。

完整示例

以下是一个完整的示例,其中包含了 Express 和 Passport 的所有代码:

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

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

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

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

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

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

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

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

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

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

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

在这个示例中,我们使用了 Passport 的序列化和反序列化功能,将用户对象序列化为一个字符串,并在需要时反序列化为用户对象。我们还创建了一个退出页面,用户可以在该页面中退出登录。

结论

在本文中,我们介绍了如何使用 Express 和 Passport 来实现用户认证功能。我们创建了一个 Express 应用程序,并使用 Passport 中间件来验证用户名和密码。我们还使用了 Passport 的序列化和反序列化功能,将用户对象序列化为一个字符串,并在需要时反序列化为用户对象。通过这个示例,你可以学习到如何使用 Express 和 Passport 来实现用户认证功能,并创建一个完整的 Web 应用程序。

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

纠错
反馈