在 Web 应用中,用户登录功能是一个基本且常见的功能,而使用第三方身份验证提供程序(IDP)来实现登录功能会使其更为实用和安全。在本文中,我们将介绍如何在 Express.js 应用程序中使用 Passport 和 Google OAuth 将 Google 帐户用于登录,并提供了一个示例代码以方便读者的理解和实际应用。
什么是 Passport 和 Google OAuth?
Passport 是一个 Node.js 的身份验证中间件,它提供了多种身份验证策略,包括本地策略、基于会话的身份验证和第三方身份验证策略。 Google OAuth 是一种身份验证协议,它使用 OAuth2 协议来对 Google 用户进行身份验证。
如何实现登录功能?
在这个示例中,我们需要先设置一个 Google Cloud 平台项目,并获取到其中的 Google OAuth API 客户端 ID 和客户端密码。具体操作可以参考 Google Cloud Platform 文档。在 Google OAuth 应用中,我们需要为我们的应用程序设置授权回调 URL,以便 Google 授权后能够将用户重定向回我们的应用程序。
首先,我们需要在我们的 package.json
文件中添加 Passport 和 Google OAuth 的依赖。
--------------- - ---------- ---------- ----------- --------- -------------------------- -------- -
我们还需要从 Passport 和 Google OAuth 中引入一些必要的模块和依赖。
----- ------- - ------------------- ----- -------- - -------------------- ----- -------------- - --------------------------------------------
在接下来的示例代码中,我们将展示如何在我们的 Express 应用程序路由中使用 Passport 和 Google OAuth 进行身份验证。
----- --- - ---------- -- -------- ----- ----------------------------- ----- -- ---------- ------- ------------------------------- ----- -- ---------- ------- ------------- --- --------------- - -- ------ ----- ------ -- --- ------ --------- ----------------- ------------- --------------------- ------------ ----------------------- -- ------------- ------------- -------- ----- -- ---------- -------- - -- ------------------------------- ---------------------------- -- ------ ------------ ----- ---- -- - --------------- --------- --- -------- --------------- ------------------------------- - ------ ----------- -------- -- -- -------- ------------------------ -------------------------------- ----- ---- -- - --------------------------- - -- --------------------- ----- ---- -- - ----------------- --------------------------- ---
首先,我们设置了两个 Passport 序列化函数:serializeUser 和 deserializeUser。SerializeUser 函数将用户对象序列化存储在会话中。DeserializeUser 函数将序列化的用户对象从会话中反序列化并将其传递给下一个中间件。
之后,我们通过调用 passport.use
来配置我们的 Google OAuth 策略。我们需要在这里传递我们的 Google OAuth 客户端 ID 和客户端密码,并提供一个授权回调 URL /auth/google/callback
。在这个例子中,我们简单地返回用户配置文件。
接下来,我们初始化了 Passport 并使用了 Passport 的 session 中间件,以便可以在会话中存储用户信息。
我们通过定义三个路由 /
,/auth/google
和 /auth/google/callback
来实现身份验证。在 /auth/google
路由中,我们使用 Passport 的 passport.authenticate
方法来发起 Google OAuth 身份验证。在这里,我们传递一个作用域数组,以告诉 Google OAuth 我们正在请求用户的 profile
和 email
信息。然后我们将用户重定向到 Google OAuth 授权“同意访问”页面。
在回调路由 auth/google/callback
中,我们调用 passport.authenticate
方法并将 google
作为参数,以便告诉 Passport 我们正在验证 Google OAuth 身份验证。当 Google OAuth 完成身份验证后,Passport 将重定向用户到 /logged-in
。
最后,我们为 /logged-in
路由提供一个简单的欢迎消息,包含用户的显示名称。
总结
在本文中,我们介绍了如何在 Express.js 应用程序中使用 Passport 和 Google OAuth 实现登录功能。我们提供了示例代码和概述了每个代码块的作用,以方便读者理解和实践。使用 Passport 和 Google OAuth 可以快速地构建实用的身份验证系统,同时保证身份安全和可靠。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64fd18d495b1f8cacdcba46b