如何使用 Express.js 和 Passport.js 创建身份验证系统

阅读时长 6 分钟读完

随着 Web 应用程序的发展,安全性往往成为一个重要的问题。特别是当您需要让用户在您的应用程序中创建和管理个人账户时,保护用户数据和信息的私密性就显得尤为重要。因此,身份验证系统被称为保障用户隐私与信息安全的核心部分。

在本文中,我们将讨论如何使用 Express.js 和 Passport.js 创建一个基本的身份验证系统。Express.js 是一种用于构建 Web 应用程序的流行 Node.js 框架,并且能够帮助我们轻松地创建 Web 服务器。而 Passport.js 是 Node.js 的一个可扩展身份验证模块,它提供了一系列身份验证策略,包括本地身份验证和第三方身份验证等。

步骤1:创建 Express.js 应用

首先,我们需要安装 Express.js 和其他所需的依赖包。我们可以使用以下命令安装这些依赖项:

一旦安装完成,我们就可以开始创建我们的 Express.js 应用程序了。在命令行中键入以下命令:

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

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

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

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

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

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

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

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

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

在上面的代码中,我们首先引入了所需的依赖项,并实例化了一个 Express.js 应用程序。然后我们添加了 body-parser 和 cookie-parser 中间件以处理请求和 cookie。接着,我们配置了 express-session 中间件,用于 session 管理,然后初始化了 Passport.js 程序并设置本地身份验证策略。此外,我们还构建了几个路由,并在其中实现了页面渲染和登录逻辑等。

步骤2:实现身份验证逻辑

接下来,我们需要在步骤1中初始化的本地身份验证策略中实现身份验证逻辑。在这个例子中,我们将仅使用一个简单的用户名和密码验证逻辑:

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

在上述代码中,我们首先比较给定的用户名和密码是否与我们所期望的数据匹配,如果匹配,则返回用户的 ID 和用户名,然后 passport.authenticate() 函数会将用户信息添加到 session 中。否则,该函数将返回一个验证失败的信息。

步骤3:实现页面渲染逻辑

在步骤1的代码中,我们创建了几个路由,其中一个路由处理主页页面的渲染逻辑,如下:

在上述代码中,如果当前请求的用户已经通过身份验证,则渲染一个个性化页面,否则渲染一个登录页面。

步骤4:实现登录页面逻辑

最后,我们需要为用户提供一个登录页面以输入他们的凭据。我们可以简单地使用 HTML 表单显示登录页面,如下所示:

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

在用户提交表单时,Express.js 将通过 passport.authenticate() 函数验证用户的凭据是否有效,如下所示:

在用户成功通过身份验证后,该函数将重定向用户到主页页面。

结论

现在,我们已经创建了一个基本的身份验证系统,可以验证用户的身份并在身份验证成功时呈现个性化页面。当然,这只是一个基本的示例,可以添加更多的身份验证和授权策略,也可以使用 Passport.js 支持的身份验证策略来解决许多常见的身份验证需求。

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

纠错
反馈