在现代的 Web 应用程序中,认证是一个非常重要的功能。OAuth 是一种常见的认证协议,它允许用户授权第三方应用程序访问他们的资源(如 Google 账户或 Facebook 账户)。
Passport 是一个非常流行的 Node.js 认证库,它支持多种认证策略,包括 OAuth。在本教程中,我们将使用 Express.js 和 Passport 来实现一个 OAuth 认证示例。
准备工作
在开始之前,我们需要确保我们已经安装了 Node.js 和 Express.js。如果你还没有安装,可以在这里下载和安装。
我们还需要安装一些依赖项。在终端中,进入你的项目目录,并运行以下命令:
npm install express passport passport-google-oauth2 --save
在这里,我们安装了 Express.js、Passport 和 Passport-Google-OAuth2。
创建应用程序
首先,我们需要创建一个 Express.js 应用程序。在你的项目目录中,创建一个名为 app.js
的文件,并添加以下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- -------- - -------------------- ----- -------------- - ------------------------------------------- ----- --- - ---------- ---------------- ---------------- --------- ----------------- ------------- --------------------- ------------ ----------------------- -- --------------------- ------------- -------- ----- - -- ----- -- ----- --------- ------ -- ------ - ---- -- --- -------- ---------- --------- - --- ----------------------- ------------------------------- - ------ --------- ---------- ---- -------------------------------- ------------------------------- - ---------------- -------- --- ------------- ---- - -- ---------- --------------- -------- ----- ------------------ --- ---------------- -- -- -------------------- --- --------- -- ---- --------
在这里,我们首先导入 Express、Passport 和 Passport-Google-OAuth2。然后,我们创建一个 Express 应用程序,并配置 Passport-Google-OAuth2 策略。
在这里,我们需要提供我们的 Google API 客户端 ID 和客户端密钥。你可以在 Google 开发者控制台中创建一个新的 OAuth 客户端 ID。
我们还定义了两个路由:/auth/google
和 /auth/google/callback
。当用户访问 /auth/google
时,他们将被重定向到 Google 的 OAuth 授权页面。一旦用户授权我们的应用程序,他们将被重定向回 /auth/google/callback
,我们将在这里处理他们的授权令牌和个人资料信息。
最后,我们启动应用程序并监听端口 3000。
运行应用程序
现在,我们已经准备好运行我们的应用程序了。在终端中,进入你的项目目录,并运行以下命令:
node app.js
现在,在你的浏览器中,访问 http://localhost:3000/auth/google
,你将被重定向到 Google 的 OAuth 授权页面。一旦你授权了我们的应用程序,你将被重定向回 http://localhost:3000/auth/google/callback
,你应该能够看到我们的应用程序成功重定向到主页。
总结
在本教程中,我们使用 Express.js 和 Passport-Google-OAuth2 实现了一个简单的 OAuth 认证示例。虽然这只是一个简单的示例,但它演示了如何使用 Passport 和 OAuth 来实现强大的认证功能。你可以将这个示例用作基础,并根据你的需求进行扩展。
完整的示例代码可以在我的 GitHub 上找到:https://github.com/johnsmith/example-oauth-passport-express。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6617b82fd10417a2227a9cc2