在 Express.js 中使用 Passport.js 进行 Google 身份验证的完全指南

在现代 Web 应用程序中,身份验证是一个不可或缺的组件。而 Google 身份验证是一个流行的身份验证方式,因为大多数人都有 Google 帐户,并且可以使用它来登录到应用程序。在本文中,我们将讨论如何使用 Passport.js 在 Express.js 中实现 Google 身份验证。

什么是 Passport.js?

Passport.js 是一个 Node.js 应用程序的身份验证中间件。它允许您使用多种身份验证策略(例如 Google、Facebook、Twitter 等)来保护您的应用程序。Passport.js 采用策略模式,这意味着您可以根据需要添加或删除身份验证策略。

为什么要使用 Google 身份验证?

Google 身份验证是一种流行的身份验证方式,因为它具有以下优点:

  • 大多数人都有 Google 帐户,因此他们不需要创建新的帐户来登录您的应用程序。
  • Google 身份验证是安全的,因为它使用 OAuth 2.0 协议来授权访问您的应用程序。
  • Google 身份验证是方便的,因为它允许您使用 Google API 来获取用户的信息,例如他们的电子邮件地址和头像。

实现 Google 身份验证的步骤

在本节中,我们将讨论如何使用 Passport.js 在 Express.js 中实现 Google 身份验证。我们将按照以下步骤进行:

  1. 创建 Google API 凭据
  2. 安装 Passport.js 和相关的依赖项
  3. 配置 Passport.js
  4. 创建路由和控制器
  5. 测试身份验证

步骤 1:创建 Google API 凭据

要使用 Google 身份验证,您需要创建一个 Google API 凭据。请按照以下步骤操作:

  1. 转到 Google Cloud Console
  2. 点击“选择项目”下拉菜单,然后点击“新建项目”。
  3. 输入项目名称,然后点击“创建”。
  4. 在左侧导航菜单中,点击“API 和服务”,然后点击“凭据”。
  5. 点击“创建凭据”,然后选择“OAuth 客户端 ID”。
  6. 选择“Web 应用程序”,然后输入以下详细信息:
    • 名称:输入您的应用程序名称。
    • 授权 JavaScript 来源:输入您的应用程序的 URL。
    • 授权重定向 URL:输入您的应用程序的授权回调 URL。
  7. 点击“创建”,然后复制您的客户端 ID 和客户端密钥。

步骤 2:安装 Passport.js 和相关的依赖项

在本节中,我们将安装 Passport.js 和相关的依赖项。请按照以下步骤操作:

  1. 在终端中,导航到您的应用程序目录。

  2. 运行以下命令来安装 Passport.js 和相关的依赖项:

    • passport 是 Passport.js 的核心库。
    • passport-google-oauth20 是 Google OAuth 2.0 身份验证策略。
    • express-session 是用于在 Express.js 中启用会话的中间件。
    • connect-mongo 是用于将会话存储在 MongoDB 中的中间件。

步骤 3:配置 Passport.js

在本节中,我们将配置 Passport.js。请按照以下步骤操作:

  1. 在您的应用程序中创建一个名为 config.js 的文件,并添加以下代码:

    • YOUR_CLIENT_ID 替换为您的 Google API 客户端 ID。
    • YOUR_CLIENT_SECRET 替换为您的 Google API 客户端密钥。
    • YOUR_SESSION_SECRET 替换为您的会话密钥。
  2. 在您的应用程序中创建一个名为 passport.js 的文件,并添加以下代码:

    • serializeUserdeserializeUser 方法用于在请求之间序列化和反序列化用户对象。
    • GoogleStrategy 是 Google OAuth 2.0 身份验证策略。
    • config 是我们刚刚创建的 config.js 文件。
    • UserModel 是一个 Mongoose 模型,用于保存用户数据。
    • accessTokenrefreshToken 是 Google OAuth 2.0 的访问令牌和刷新令牌。
    • profile 包含 Google OAuth 2.0 返回的用户资料。

步骤 4:创建路由和控制器

在本节中,我们将创建路由和控制器。请按照以下步骤操作:

  1. 在您的应用程序中创建一个名为 routes.js 的文件,并添加以下代码:

    • passport.authenticate 是 Passport.js 的身份验证中间件。
    • successRedirectfailureRedirect 是在身份验证成功或失败后重定向的 URL。
    • req.logout() 用于注销用户。
    • req.user 是当前登录用户的对象。
    • res.render 用于呈现视图。
  2. 在您的应用程序中创建一个名为 views 的文件夹,并创建以下两个视图文件:

    • home.ejs

    • profile.ejs

  3. 在您的应用程序中创建一个名为 server.js 的文件,并添加以下代码:

    • express 是 Express.js 的核心库。
    • session 是用于在 Express.js 中启用会话的中间件。
    • MongoStore 是用于将会话存储在 MongoDB 中的中间件。
    • mongoose 是 MongoDB 的对象建模库。
    • app.set 用于设置视图引擎。
    • app.use 用于添加中间件。
    • passport.initializepassport.session 用于启用 Passport.js。
    • routes 是我们刚刚创建的 routes.js 文件。

步骤 5:测试身份验证

在本节中,我们将测试身份验证。请按照以下步骤操作:

  1. 在终端中,导航到您的应用程序目录。

  2. 运行以下命令来启动应用程序:

  3. 在浏览器中打开以下 URL:

  4. 点击“Login with Google”按钮,然后使用您的 Google 帐户登录。

  5. 您将被重定向到主页,其中显示欢迎消息和注销链接。

  6. 点击“Profile”链接,然后查看您的个人资料信息。

  7. 点击“Logout”链接,然后注销您的帐户。

总结

在本文中,我们讨论了如何使用 Passport.js 在 Express.js 中实现 Google 身份验证。我们讨论了 Passport.js 的优点、Google 身份验证的优点和步骤,以及如何测试身份验证。我们还提供了示例代码和视图文件,以便您可以轻松地实现身份验证。希望这篇文章对您有所帮助!

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


纠错
反馈