📅  最后修改于: 2023-12-03 15:07:44.759000             🧑  作者: Mango
如果您正在构建一个需要用户身份验证的 Web 应用程序,那么 Passport 是一个非常有用的 Node.js 框架!Passport 支持多种身份验证策略,包括 Google 身份验证。在本文中,我们将介绍如何集成 Google 身份验证以确保您的应用程序的安全。
首先,您需要在 Google API 控制台中创建一个新项目并启用 Google 身份验证 API。请按照以下步骤操作:
访问 Google Cloud Console,并使用自己的 Google 账号登录。
点击“选择项目”按钮并创建一个项目。
为您的项目启用 Google 身份验证 API。
在“凭据”选项卡下创建 OAuth 2.0 客户端 ID。选择“Web 应用”并输入以下详细信息:
在安装 Passport 和 Passport Google Strategy 之前,请确保已使用以下命令初始化您的 Node.js 项目:
npm init
或者:
yarn init
安装过程:
npm install passport passport-google-oauth20 --save
完成后,您可以开始设置 Passport Google Strategy。在实现此步骤之前,请确保您的项目已连接到 MongoDB。
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
passport.use(new GoogleStrategy({
clientID: 'Google Client ID',
clientSecret: 'Google Client Secret',
callbackURL: '/auth/google/callback'
},
(accessToken, refreshToken, profile, done) => {
// 使用 profile 数据或创建新用户
}));
请注意,其中的参数如下:
clientID
:Google API 控制台中创建的客户端 ID。clientSecret
:Google API 控制台中创建的客户端密码。callbackURL
:用户登录后将重定向到的 URL。最后,创建一个用于初始化 Passport 的中间件:
app.use(passport.initialize());
app.use(passport.session());
在这个步骤中,我们将为用户身份验证设置一个路由。根据约定,此路由名称应设置为 auth/google
,以激活 Google 身份验证策略。
app.get('/auth/google',
passport.authenticate('google', { scope: ['profile'] })
);
在用户成功登录并授权后,Google 身份验证 API 将重定向到我们在之前设置的 callbackURL
中。当用户访问此 URL 时,我们将在该路由中处理用户授权的回调。
app.get('/auth/google/callback',
passport.authenticate('google', {failureRedirect: '/login'}),
(req, res) => {
// 验证成功,处理用户登录
res.redirect('/');
}
);
在回调函数中,我们可以验证用户身份并将用户数据存储在数据库中。一旦完成,我们将使用 res.redirect
将用户重定向到应用程序的主页。
现在您已经知道如何使用 Passport 和 Google 身份验证创建安全的 Node.js Web 应用程序。Passport 提供了许多不同的身份验证策略,因此您可以选择最适合您应用程序的策略。祝您好运开始使用 Passport!