在 Express.js 中使用 Passport.js 实现用户认证

阅读时长 5 分钟读完

在开发现代 web 应用程序时,用户认证是必不可少的一部分。这是因为您需要确保只有经过授权的用户访问您的应用程序,并保护用户数据免受未经授权的访问。

为了实现用户认证,使用 Passport.js 是一种非常流行和有效的方法。Passport.js 是一个 Node.js 应用程序开发框架,可以轻松地在 Express.js 应用程序中集成,并提供了许多策略,如本地策略、Google、Facebook、GitHub 等等,使您可以选择最适合您应用程序的策略。

安装

在使用 Passport.js 之前,需要将其安装到您的项目中。请在终端中使用以下命令进行安装:

还需要安装适当的策略,如本地策略。本地策略将用户凭据保存在应用程序本地数据库中,因此只有经过身份验证的用户才可以访问应用程序。使用以下命令安装本地策略:

配置

下一步是将 Passport.js 配置到 Express.js 应用程序中。请参照以下示例代码:

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

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

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

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

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

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

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

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

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

此代码应该是直截了当的,但是还是做了很多事情。首先,我们表示了一个简单的 Express.js 应用程序。然后,我们添加了 Passport.js 初始化和 session 中间件。初始化中间件允许 Passport 在整个应用程序中运行,而 session 中间件允许 Passport 存储有关身份验证的用户信息,以便他们保持登录状态。

接下来,我们配置了一个本地策略,即将用户凭据保存在应用程序的本地数据库中。Passport 将调用本地策略的验证函数,该函数将检查用户名和密码是否正确。如果通过验证,则 done 函数将返回一个用户对象。否则,返回一个错误消息。

我们还在 Passport 上定义了序列化和反序列化函数,方法是将用户对象序列化为字符串,以便它可以存储在 session 中。反序列化函数则将该字符串反序列化为用户对象。这些函数必须在 Passport 初始化之后配置。

下一步是添加路由。我们定义一个简单的主页路由,然后添加了一个身份验证路由。身份验证路由将使用 Passport authenticate 函数处理身份验证请求。我们传递了一个 local 策略,该策略将调用我们上面定义的本地策略。如果身份验证成功,则用户将重定向到主页,否则将重定向到登录页面。

最后,我们启动了服务器,并指定将其绑定到端口 3000。

结论

使用 Express.js 和 Passport.js 实现用户认证并不是一项复杂的任务。通过使用 Passport.js,可以轻松地添加各种策略,如 Google、Facebook 或本地策略,以便您可以选择最适合您应用程序的策略。本教程提供了一个简单的例子,只需与您的应用程序一起使用即可。

完整示例代码请参见此处:https://github.com/passport/express-4.x-local-example

祝好运!

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

纠错
反馈