如何在 Express.js 中使用 OAuth 认证

阅读时长 5 分钟读完

前言

OAuth(Open Authorization)是一个开放的标准,允许用户让第三方应用访问其在某个服务(如 Google、Facebook、Twitter 等)上的数据,而不需要提供密码。这种授权机制可用于客户端、服务器端甚至移动设备等应用中。Express.js 是一种 Node.js 框架,它简化了开发过程,并提供了大量的功能性包。本文将介绍如何在 Express.js 中使用 OAuth 认证。

什么是OAuth

OAuth 是一种开放的授权机制,让用户有了更多的控制权,可以授权第三方应用访问他们的服务。例如,一个用户可以使用 Gmail 来注册一个新账户,而无需提供 Gmail 的密码给该应用。

简单来说,OAuth 分为三个主要的组件:服务提供者(例如 Google,Facebook 或 Twitter),用户和要访问服务提供者的应用程序。当一个应用程序需要访问用户在服务提供者上的数据时,这个应用程序需要进行 OAuth 认证和授权。

如何在 Express 中使用 OAuth 认证

在 Express 中使用 OAuth 认证,需要借助 Passport.js 这个身份认证中间件,它支持各种 OAuth 提供商,如 Facebook、Google、Twitter 等。本文以 Google 为例,介绍如何在 Express 中使用 OAuth 认证。

步骤 1:安装 Passport 和相关插件

在使用 Passport.js 之前,需要先安装相关插件。在命令行运行以下命令:

其中,dotenv 是一个用于从 .env 文件中加载环境变量的插件。

步骤 2:创建 Google APIs 项目

在 Google APIs 控制台创建新项目,选中 Navigation Menu(导航菜单)中的“APIs & Services”并选择“Credentials”(凭据)。

在“Create credentials”(创建凭据)下,选择“OAuth client ID”(OAuth 客户端 ID)。填写应用名称和重定向 URL。

在“APIs & Services” > “Credentials” 下面,找到你的 OAuth 客户端 ID,并将它添加到环境变量:

步骤 3:编写 Express 应用程序

在应用程序中,需要加入 passportpassport-google-oauthdotenv 模块。下面是一个简单的启动服务器的代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - --------------------
----- -------------- - ------------------------------------------------
----- ------ - ------------------

-- - ---- ---------
----------------

----- --- - ----------

-------------------------------
----------------------------

---------------- ----------------
  --------- -----------------------------
  ------------- ---------------------------------
  ------------ -----------------------
--
--------------------- ------------- -------- ----- -
  -- -------- --------
----

-----------------------
  ------------------------------- - ------ ---------------------------------------------- ----

--------------------------------
  ------------------------------- - ---------------- -------- ---
  ------------- ---- -
    ------------------
  -
--

---------------- -- -- -
  ---------------- --------- -- ---- -------
---

在这段代码中,我们首先将 passport 初始化,然后使用 dotenv 为环境变量加载 .env 文件。接着,我们使用 GoogleStrategy 设置 google 身份验证的客户端ID、客户端密钥和回调URL。最后,我们为路由路径 /auth/google/auth/google/callback设定路由,并设置两个函数。

步骤 4:进行身份验证

现在,我们已经完成了所有必要的设置。现在,我们可以通过运行代码 npm start 在本地启动服务器,并在浏览器中访问 http://localhost:3000/auth/google。用户将被重定向到 Google 登录页面,并允许应用程序访问用户的数据。成功认证后,用户将被重定向到 /auth/google/callback

总结

在本文中,我们介绍了 OAuth 的基本知识和在 Express.js 中实现 OAuth 认证的步骤。要使用不同的 OAuth 提供商,请适当更改代码并遵循相应的文档。

参考资料

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c7a98d5ad90b6d04114cc5

纠错
反馈