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

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

在开发现代 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


猜你喜欢

  • 如何使用 GraphQL 进行 API 的版本控制

    随着 Web 技术的发展,前端开发愈加重视 API 的设计和接口规范,而版本控制也是 API 开发中不可或缺的一环。本文将介绍如何使用 GraphQL 进行 API 的版本控制。

    14 天前
  • 在 Serverless 框架中使用 Step Functions 进行流程控制

    Serverless 架构已经成为了现代应用程序开发的趋势之一。Lambda 函数的自动扩展和管理使得服务器部署和维护成本大大降低。Serverless 架构还提供了无限的扩展性和可用性,这些都是以前...

    14 天前
  • Promise 中常犯的错误

    JavaScript 中的 Promise 是一种常见的编程工具,它可以简化异步编程,提高可读性和可维护性。虽然它可以帮助我们更好地组织代码,但对于不熟悉 Promise 的开发者来说,也会有一些常见...

    14 天前
  • 如何在 ECMAScript 2020 中使用可选链操作符?

    前端开发中经常会涉及到访问对象的属性,但是在实际开发中,有些对象的属性可能不存在,这时候就需要进行判断。在过去,我们通常会通过 ?? 运算符或者使用条件判断语句来确保对象属性的存在。

    14 天前
  • Web Components 中的 SEO 优化技巧与实践

    Web Components 是现代 Web 开发中的新型技术,它们被广泛应用于构建可重用且独立的组件库。然而,由于 Web Components 的独特架构,它们需要特别的优化以获得最佳的搜索引擎优...

    14 天前
  • 解决RESTful API的持久层错误

    RESTful API是现代web应用程序中经常使用的一种API风格。它使用HTTP请求与服务器通信,并支持各种HTTP方法和状态码。但是,当在RESTful API的持久层中出现错误时,可能会导致应...

    14 天前
  • ProntoVS:开发无障碍交互式虚拟实验室的方法和经验

    在当前的技术飞速发展时代,越来越多的教育和培训机构,甚至企业都开始使用虚拟实验室来进行技能和知识的培训。而无障碍交互式虚拟实验室则是对于身体上无法前往实际现场的人群提供了巨大的便利。

    14 天前
  • Redis 中使用命令行导入导出数据的技巧

    Redis 中使用命令行导入导出数据的技巧 Redis 是一种内存数据库,因为它能够快速读取和写入数据,使其成为非常流行的数据库。虽然 Redis 做出了很多的改进,但是有时候我们还是需要在 Redi...

    14 天前
  • ESLint:如何解决使用未定义变量的错误?

    ESLint 是一个用于检查 JavaScript 代码是否符合规则的工具,可以在开发过程中帮助我们发现代码中的问题。其中一个最常见的问题是使用未定义变量,这种错误在开发过程中非常常见,但它们可能会导...

    14 天前
  • 使用 ES11 中的可选 catch 语句处理异常及其详解

    在前端的开发中,处理异常是非常重要的一部分工作。而在 ES11 中,新增了可选 catch 语句,使得我们的代码可以更加清晰简洁地处理异常。本文将详细介绍 ES11 中可选 catch 语句的使用及其...

    14 天前
  • 通过 pm2 运行 node 项目

    在开发和运行 node 项目时,我们通常使用 node 自带的 npm 命令来启动和管理应用程序。但是,npm 命令有一些限制,比如无法在后台运行应用程序,无法自动重启应用程序等。

    14 天前
  • 在 Hapi 框架中使用 Redis 进行缓存优化

    为什么要使用缓存优化? Web 应用程序的性能往往受到应用程序的速度以及应用程序从外部 API、数据库等获取数据的速度的影响。其中,数据库操作是最容易成为性能瓶颈的一环。

    14 天前
  • 网站必要功能——SPA搜索引擎优化

    随着互联网技术的不断发展,越来越多的网站开始采用SPA(Single Page Application)技术来提高用户体验。然而,SPA也带来了一个新的问题——搜索引擎优化(SEO)。

    14 天前
  • Headless CMS 和 JAMstack:如何管理现代 Web 应用程序

    现代 Web 应用程序已经成为许多企业的核心业务,而 Headless CMS 和 JAMstack 架构则成为了这类 Web 应用程序的不二选择。它们可以帮助开发者更好地管理和开发现代 Web 应用...

    14 天前
  • Redux 中间件的实现与应用详解

    前言 Redux 是一种流行的前端状态管理库,它提供了一个可预测的状态容器和编写 JavaScript 应用程序的方式。但是,Redux 只提供了最基本的功能,例如 action 和 reducer,...

    14 天前
  • 怎么使用基于 babel 的编译工具来优化 Cycligent AVA?

    引言 Cycligent AVA 是一个流行的 JavaScript 测试运行器。它提供了许多便捷的特性,如并行测试、测试报告等等。但是,有时候我们会发现测试的运行速度比较慢,尤其是在大型的项目中。

    14 天前
  • 在 Tailwind CSS 中使用网格布局的技巧

    Tailwind CSS 是一个非常流行的前端框架,它具有简单、灵活、可定制的特点。除了常见的 CSS 样式,Tailwind 还支持网格布局。 在这篇文章中,我们将学习如何使用 Tailwind C...

    14 天前
  • MongoDB 数据导入导出技巧及常见错误解决方法

    简介 MongoDB 是一种基于文档存储的 NoSQL 数据库,其具有高灵活性、易扩展性等优点,因此在 Web 应用程序开发中被广泛使用。为了更好地管理 MongoDB 数据库,需要掌握 MongoD...

    14 天前
  • 如何使用 GraphQL 和 RxJS 进行搜索

    GraphQL 已经成为了一个流行的前端 API 查询语言。与传统的 RESTful API 不同,GraphQL 允许前端应用程序精确地获取所需的数据,从而提高了性能和效率。

    14 天前
  • 使用 PostgreSQL 进行数据库性能优化的方法

    PostgreSQL 是一种强大的关系型数据库管理系统,为网站和应用提供了高性能、稳定和安全的数据存储解决方案。但是在使用 PostgreSQL 进行开发和部署时,性能问题往往会成为制约应用性能和可靠...

    14 天前

相关推荐

    暂无文章