如何在 Express.js 中集成 Passport.js 进行身份验证

身份验证是面向 Web 应用程序的常见功能之一。常见的身份验证方式包括用户名和密码、社交媒体账户、OpenID、OAuth 等。Passport.js 是一个流行的身份验证中间件,可以轻松地将身份验证添加到 Express 应用程序中。

在本文中,我们将探讨如何在 Express.js 中集成 Passport.js 进行身份验证。我们将介绍如何配置和使用本地身份验证策略,以及如何在 Passport.js 中集成社交媒体身份验证。

什么是 Passport.js

Passport.js 是一个Node.js 应用程序的基于中间件的身份验证框架。它充分利用了 Node.js 的异步特性,从而能够轻松地添加身份验证到应用程序中。Passport.js 提供了超过 300 个不同的身份验证策略,包括本地账户、社交媒体账户、OpenID、OAuth 等。

Passport.js 的优点:

  1. 灵活性:您可以选择使用内置的身份验证策略或编写自己的身份验证策略
  2. 高度可配置:您可以轻松地配置和自定义身份验证策略
  3. 安全性:Passport.js 在处理身份验证期间始终保持安全
  4. 扩展性:Passport.js 能够轻松地与您的应用程序中的其他中间件库集成

集成本地身份验证策略

在本地身份验证中,用户在应用程序中提供用户名和密码来进行身份验证。 这是一种最常见的身份验证方法。Passport.js 提供了一种称为 LocalStrategy 的本地身份验证策略。

步骤1:安装 Passport.js 和 LocalStrategy

在终端中使用以下命令安装 Passport.js 和 LocalStrategy:

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

步骤2:配置 Passport.js

现在,我们需要在应用程序中配置 Passport.js。 首先,导入 Passport.js 和 LocalStrategy。 应该在启动应用程序之前进行此操作。

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

然后我们需要初始化 Passport.js,在应用程序中添加以下代码:

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

步骤3:实现 LocalStrategy

LocalStrategy 通常需要以下功能:

  • 初始化 username 和 password 作为输入参数。
  • 查询数据库以检查用户是否存在。
  • 比较用户提供的密码与数据库中存储的密码是否匹配。

以下是如何实现 LocalStrategy 的示例代码:

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

步骤4:序列化和反序列化用户

Passport.js 在对用户进行身份验证后需要序列化和反序列化用户。在 Passport.js 中,序列化是将用户的信息存储到 session 中以便后续使用,反序列化是将用户的信息从 session 中提取并应用于请求中。

以下是如何在 Passport.js 中实现序列化和反序列化的示例代码:

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

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

步骤5:实现身份验证路由

最后,我们需要实现登录/身份验证路由。以下是如何在 Express.js 中实现此路由的示例代码:

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

集成社交媒体身份验证

除了本地身份验证,Passport.js 还支持社交媒体身份验证。社交媒体身份验证能够通过社交媒体网站(如 Facebook、Twitter)登录应用程序。

步骤1:安装 Passport.js 社交媒体策略

在终端中使用以下命令安装适用于要用作身份验证者的每个提供程序的 Passport.js 社交媒体策略:

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

步骤2:配置 Passport.js

在导入适当的身份验证策略之后,我们需要在应用程序中初始化 Passport.js。 通常情况下,这与本地身份验证相同:

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

步骤3:实现社交媒体策略

Passport.js 社交媒体策略需要执行以下操作:

  • 设置配置(API 密钥、回调 URL 等)。
  • 处理回调请求并检索响应的社交媒体帐户信息。

以下是如何实现 Facebook 登录策略的示例代码:

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

步骤4:实现身份验证路由

完成上述工作后,需要实现一个新的路由来启动身份验证过程。以下是如何实现 Facebook 登录路由的代码示例:

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

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

结论

本文介绍了如何在 Express.js 中集成 Passport.js 进行身份验证。我们介绍了如何配置和使用本地身份验证策略以及如何在 Passport.js 中集成社交媒体身份验证。通过在应用程序中使用 Passport.js,您可以轻松地添加身份验证到应用程序中,并提供一种易于使用的身份验证中间件库。

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