OAuth 是一种用于授权的开放标准,它允许用户授权第三方应用访问他们的数据,而无需将其密码提供给第三方应用。在 Web 应用程序中,OAuth 通常用于允许用户使用他们的社交媒体帐户(如 Facebook、Twitter 或 Google)登录。
在本文中,我们将介绍如何在 Node.js 中实现 OAuth 认证。我们将使用 Passport.js 这个流行的 Node.js 库,它提供了一组易于使用的中间件,用于处理用户身份验证。
步骤 1:安装 Passport.js
首先,我们需要安装 Passport.js。可以使用以下命令在 Node.js 应用程序中安装 Passport.js:
npm install passport --save
步骤 2:选择 OAuth 提供商
在使用 OAuth 认证之前,我们需要选择 OAuth 提供商。OAuth 提供商是一个允许用户使用其帐户登录的服务。例如,如果我们希望允许用户使用他们的 Google 帐户登录我们的应用程序,则 Google 将是我们的 OAuth 提供商。
在本文中,我们将使用 GitHub 作为我们的 OAuth 提供商。我们需要在 GitHub 上创建一个应用程序,以便我们可以使用 GitHub OAuth API 进行身份验证。
在“应用程序名称”字段中输入应用程序的名称。
在“主页 URL”字段中输入应用程序的主页 URL。
在“授权回调 URL”字段中输入应用程序的回调 URL。这是 GitHub 在用户授权之后重定向用户的 URL。在本例中,我们将使用
http://localhost:3000/auth/github/callback作为回调 URL。单击“注册应用程序”。
在下一个屏幕上,您将看到您的应用程序的客户端 ID 和客户端密码。将这些值保存在一个安全的位置,因为我们稍后将需要使用它们。
步骤 3:配置 Passport.js
现在,我们需要配置 Passport.js。我们将使用 passport-github2 这个 Passport.js 的插件来处理 GitHub OAuth 认证。
使用以下命令安装
passport-github2:npm install passport-github2 --save
在 Node.js 应用程序的代码中,添加以下代码:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- -------------- - ------------------------------------- ---------------- ---------------- --------- ----------------- ------------- --------------------- ------------ -------------------------------------------- -- --------------------- ------------- -------- ----- - -- ----------- - ---在上面的代码中,我们使用
passport-github2的Strategy类创建了一个新的身份验证策略。我们将clientID和clientSecret替换为我们在 GitHub 上创建的应用程序的值。我们还指定了回调 URL,该 URL 将在 GitHub OAuth API 身份验证后重定向用户。在
function(accessToken, refreshToken, profile, done)中,我们将处理用户身份验证。在本例中,我们将在控制台上打印用户的 GitHub 用户名:console.log(profile.username);
在 Node.js 应用程序的路由中,添加以下代码:
app.get('/auth/github', passport.authenticate('github', { scope: [ 'user:email' ] })); app.get('/auth/github/callback', passport.authenticate('github', { failureRedirect: '/login' }), function(req, res) { // 在此处处理身份验证成功后的重定向 res.redirect('/'); });在上面的代码中,我们使用
passport.authenticate中间件处理 GitHub OAuth 身份验证。我们还指定了scope,这是要请求的 GitHub OAuth API 范围。在passport.authenticate成功后,我们将在回调函数中重定向用户。
步骤 4:测试 OAuth 认证
现在我们已经完成了 OAuth 认证的设置。我们可以使用以下步骤测试 OAuth 认证:
启动 Node.js 应用程序。
转到
http://localhost:3000/auth/github,这将重定向您到 GitHub,要求您授权访问您的 GitHub 帐户。授权后,您将被重定向回 Node.js 应用程序,并在控制台上看到您的 GitHub 用户名。
恭喜!现在您已经成功地在 Node.js 中实现了 OAuth 认证。如果您想要更深入地了解如何使用 Passport.js 和 OAuth 认证,请查看 Passport.js 的文档。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d8ca8aa941bf7134f5d45b