Express.js 教程:如何使用 Passport Local 在应用程序中实现身份验证

阅读时长 6 分钟读完

在 Web 开发中,身份验证是至关重要的一部分。Passport 是一个流行的身份验证库,它可以轻松地与 Express.js 集成。在本文中,我们将学习如何使用 Passport Local 在 Express.js 应用程序中实现基本的身份验证。

什么是 Passport?

Passport 是一个 Node.js 应用程序的身份验证库。它支持多种身份验证策略,包括本地身份验证、OAuth、OpenID 等。Passport 的设计目标是简单、灵活和模块化,可以轻松地与 Express.js 集成。

什么是 Passport Local?

Passport Local 是 Passport 的一种本地身份验证策略。它使用用户名和密码进行身份验证,将用户信息存储在应用程序的本地数据库中。

如何使用 Passport Local 实现身份验证?

在使用 Passport Local 实现身份验证之前,我们需要安装和配置 Passport 和 Passport Local。

安装 Passport 和 Passport Local

使用以下命令安装 Passport 和 Passport Local:

配置 Passport

在 Express.js 应用程序中,我们需要配置 Passport。以下是一个简单的 Passport 配置:

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

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

在上面的代码中,我们使用 Passport Local 创建了一个本地身份验证策略。该策略接受用户名和密码作为输入,然后在本地数据库中查找用户。如果用户存在并且密码正确,则返回用户信息。

配置 Passport 序列化和反序列化

Passport 需要配置序列化和反序列化函数,以便在用户登录和注销时使用。以下是一个简单的序列化和反序列化配置:

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

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

在上面的代码中,我们使用 Passport 配置了序列化和反序列化函数。序列化函数将用户 ID 存储在会话中,以便在用户登录后可以轻松地查找该用户。反序列化函数根据用户 ID 查找用户信息,并将其存储在 req.user 对象中,以便在后续的请求中可以轻松地访问该信息。

配置 Express.js 应用程序

在 Express.js 应用程序中,我们需要配置 Passport 中间件。以下是一个简单的配置:

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

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

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

在上面的代码中,我们使用 Express.js 配置了 Passport 中间件。我们使用 express-session 中间件来存储会话信息。我们还在应用程序中使用了 Passport 初始化和会话中间件。

创建登录和注销路由

在 Express.js 应用程序中,我们需要创建登录和注销路由。以下是一个简单的登录和注销路由:

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

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

在上面的代码中,我们创建了一个 POST 路由来处理登录请求。该路由使用 Passport authenticate 中间件来处理身份验证。如果身份验证失败,则重定向到登录页面。如果身份验证成功,则重定向到主页。

我们还创建了一个 GET 路由来处理注销请求。该路由使用 req.logout() 函数来注销用户,并重定向到主页。

创建保护路由

在 Express.js 应用程序中,我们需要创建保护路由,以确保只有已登录的用户才能访问。以下是一个简单的保护路由:

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

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

在上面的代码中,我们创建了一个 GET 路由来显示用户的个人资料。该路由使用 isAuthenticated 中间件来检查用户是否已登录。如果用户已登录,则继续执行下一个中间件。如果用户未登录,则重定向到登录页面。

总结

在本文中,我们学习了如何使用 Passport Local 在 Express.js 应用程序中实现身份验证。我们了解了 Passport 和 Passport Local 的基本概念,并学习了如何配置 Passport 和 Express.js 应用程序。我们还创建了登录、注销和保护路由,以确保应用程序的安全性。我们希望这篇文章对您有所帮助,并能够帮助您在实际项目中实现身份验证。

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

纠错
反馈