在现代 Web 开发中,用户身份验证和授权是必不可少的一项基础任务。OAuth 是一种授权框架,用于允许第三方应用程序访问用户资源的安全协议,因此 OAuth 的实现被广泛用于用户授权。本文将介绍如何在 Express.js 中使用 Passport 库来简单地实现 OAuth 授权登录的功能。
准备工作
在使用 Passport 库和 OAuth 授权登录之前,我们需要进行以下准备工作:
- 在需要进行授权的网站或平台上申请 OAuth App,并获取 App ID 和 App Secret 等授权信息。
- 安装 Node.js 并使用 npm 安装 Express 和 Passport 库。
在该例中,我们使用 Facebook 的 OAuth 授权为例子;你也可以使用其他 OAuth 授权提供商,同样的流程也适用。
配置 Passport
现在我们需要在 Node.js 项目中使用 Passport 来实现 OAuth 授权登录功能。首先,我们需要通过 npm
来安装 Passport 和其 OAuth 插件:
--- ------- -------- --- ------- -----------------
在使用 Passport 之前,我们需要在 app.js
中进行配置。在你的 app.js
中,导入 Passport 和 OAuth 插件,然后初始化 Passport 和会话:
----- ------- - ------------------- ----- -------- - -------------------- ----- ---------------- - -------------------------------------- ----- ------- - --------------------------- ----- --- - ---------- ----------------- ------- ----------------------- ------- ----- ------------------ ---- ---- ------------------------------- ----------------------------
我们还可以通过 Passport 配置策略来实现 OAuth 登录。在这个例子中,我们使用 FacebookStrategy 策略,需要提供 App ID 和 App Secret 作为授权信息:
---------------- ------------------ --------- ------------------- ------------- ----------------------- ------------ ---------------------------------------------- -- --------------------- ------------- -------- ----- - -- ------ -- ------------- -- -------------- - ---------- ------- - -- ------------ ------------------- ----------- ---------- -- -------- ----- ----- - ------ --------- ------ --- - ---
在以上代码中,我们创建了一个使用 Facebook Strategy 的 Passport。我们通过传递 App ID 和 App Secret 以及我们的回调 URL,来获取 Facebook 授权并验证用户。然后,我们将用户信息保存在我们的数据库中,并以回调方式发出完成信号 done(err, user)
。
最后,在保存用户信息到数据库之前,请勿忘记先定义 User 模型,并连接你的数据库。
----- -------- - -------------------- ------------------------------------------------------- ----- ---------- - --- ----------------- ----------- ------ --- ----- ---- - ---------------------- ------------
OAuth 授权登录
现在我们已经完成了 Passport 和 OAuth 的配置,我们开始实现 OAuth 授权登录。在你的 Express.js 应用中,我们可以定义路由来实现授权登录,这里使用 Facebook 授权示例如下:
------------------------- ----------------------------------- ---------------------------------- --------------------------------- - ---------------- -------- --- ------------- ---- - -- ---------- ------------------ ---
以上代码定义了两个路由,用于指示用户授权和授权后的跳转逻辑。由于用户已经在 Facebook 中授权了我们的 OAuth App,所以我们在第一个路由中使用 passport.authenticate()
来委托 Passport 执行授权。在接下来的路由中,我们从 Facebook 获取授权信息,并将用户重定向回我们的应用程序后,我们使用 passport.authenticate()
来验证并保存用户信息(由 FacebookStrategy 定义)。
最后,我们配置我们应用程序中的登录路由。在我的例子中,这个路由被称为 /login
:
----------------- ------------- ---- - ------------------ --- ------------ ------------- ---- - ------------ - ------------------ - ---- - ----------------------- - ---
/login
路由会在用户未登录时显示,当用户登录后,则自动跳转到 /
,此时 /
路由返回登录成功的提示信息。
总结
在本文中,我们讨论了如何使用 Passport 库和 OAuth 授权登录,让你能够微不足道地实现用户身份验证和授权的功能。使用 Passport 可以让我们轻松地集成 Facebook 或其他 OAuth 授权提供商,使我们可以在应用程序中实现多种身份验证方式。在学习 Passport 的过程中,你还可以深入了解策略,了解它们如何工作并根据你的需求进行配置。希望这篇文章对你有所帮助!
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64a631ce48841e98942c63ef