使用 Express.js 和 Passport.js 实现用户身份验证

阅读时长 7 分钟读完

随着 Web 应用程序功能的增加,用户身份验证变得越来越重要。经过身份验证的用户可以享受到更多的功能和服务,而未经身份验证的用户则可能受到限制或无法使用某些服务或功能。

在本文中,我们将介绍如何使用 Express.js 和 Passport.js 实现用户身份验证。Express.js 是一个流行的 Web 应用程序框架,而 Passport.js 是一个身份验证中间件。

安装依赖

在开始之前,我们需要安装依赖:

其中,passport 、passport-local 、cookie-parser 和 express-session 是我们需要的主要依赖。

设置 Passport.js

Passport.js 是一个身份验证中间件,它提供了各种策略来验证用户的身份。在本文中,我们将使用本地策略来验证用户的身份。

首先,在应用程序中引入 Passport.js 并设置本地策略:

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

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

以上代码设置了本地策略并使用用户名和密码查询数据库来验证用户身份。如果验证失败,则返回 false。如果验证成功,则返回用户对象。

接下来,我们还需要设置序列化和反序列化用户对象:

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

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

这两个函数分别将用户对象序列化和反序列化为字符串或其他可以存储或传输的格式。

设置 Express.js

接下来,我们需要在应用程序中设置 Passport.js 和相关中间件:

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

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

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

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

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

以上代码设置了 cookie-parser 、express-session 和 Passport.js 的各种中间件。其中,express-session 用于存储用户会话。

最后,我们还需要为登录和注销等路由设置处理程序:

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

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

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

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

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

以上代码设置了登录和注销路由的处理程序。如果用户登录失败,则重定向到登录页面。如果用户登录成功,则重定向到主页。如果用户注销,则重定向到主页。

示例代码

以下是完整的示例代码:

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

本文介绍了如何使用 Express.js 和 Passport.js 实现用户身份验证。我们通过设置 Passport.js 并使用本地策略验证用户的身份,最后设置 Express.js 和相关中间件来处理登录和注销路由。

如果您要实现用户身份验证功能,说明您的 Web 应用程序需要更高的功能和服务。通过学习本文的内容,您将了解这些功能和服务是如何实现的,并能使用示例代码来快速开发和部署您的应用程序。

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

纠错
反馈