如何在 Express.js 中使用 Passport 认证

阅读时长 8 分钟读完

在现代 web 应用程序中,用户认证是一个必不可少的功能。 Passport 是一个 Node.js 的身份验证中间件,它可以帮助我们在 Express.js 应用程序中实现用户身份验证和授权。在本文中,我们将学习如何在 Express.js 中使用 Passport 认证。

安装 Passport

在开始使用 Passport 之前,我们需要安装它。可以使用 npm 命令进行安装。

这将安装 Passport 及其本地策略。

配置 Passport

在配置 Passport 之前,我们需要在 Express.js 应用程序中引入 Passport 模块。

然后,我们需要配置 Passport。我们需要告诉 Passport 如何序列化和反序列化用户对象。序列化用户对象是指将用户对象转换为一个可存储的标识符,以便在用户登录后将其存储在会话中。反序列化用户对象是指将存储的标识符转换回用户对象。

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

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

在这个例子中,我们使用 MongoDB 数据库存储用户对象。我们使用 User.findById 方法从数据库中检索用户对象。done 回调函数用于在完成序列化或反序列化操作后通知 Passport。

接下来,我们需要告诉 Passport 使用哪种策略进行身份验证。在本例中,我们将使用本地策略进行身份验证。

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

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

在这个例子中,我们使用 User.findOne 方法从数据库中检索用户对象。如果找到用户对象,则验证密码。如果密码验证成功,则使用 done 回调函数将用户对象返回给 Passport。否则,返回错误消息。

使用 Passport

在配置 Passport 后,我们需要在 Express.js 应用程序中使用它。我们需要使用 Passport 中间件将 Passport 添加到 Express.js 应用程序中。

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

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

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

在这个例子中,我们使用 express-session 中间件来处理会话。我们将 Passport 初始化中间件和 Passport 会话中间件添加到 Express.js 应用程序中。

现在,我们可以使用 Passport 进行身份验证。我们可以使用 passport.authenticate 方法来验证用户凭据。例如,我们可以使用下面的代码来验证用户登录。

在这个例子中,我们使用 passport.authenticate 方法来验证用户凭据。如果验证成功,则重定向到主页。否则,重定向到登录页面。

示例代码

下面是一个完整的 Express.js 应用程序,它使用 Passport 进行身份验证。

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

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

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

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

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

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

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

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

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

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

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

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

这个例子中,我们使用本地策略进行身份验证。我们使用一个简单的数组来存储用户对象。在实际应用程序中,我们应该使用数据库来存储用户对象。

结论

在本文中,我们学习了如何在 Express.js 应用程序中使用 Passport 进行身份验证。我们学习了如何配置 Passport,如何使用 Passport 中间件,以及如何使用 Passport 进行身份验证。我们还提供了一个完整的 Express.js 应用程序示例,它使用 Passport 进行身份验证。现在,你可以在自己的应用程序中使用 Passport 进行身份验证。

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

纠错
反馈