简介
在现代 Web 应用中实现用户登录和认证是很常见的需求,为了简化和标准化这个过程,已经有很多流行的第三方认证服务。其中,Google 是被广泛使用和信赖的服务之一,因为它提供了强大的用户管理和数据隐私保护机制。在 Express.js 中使用 Passport.js,一个非常流行的 Node.js 认证中间件,可以轻松实现 Google 登录功能。
前置知识
在阅读本文之前,你需要:
- 熟悉 JavaScript 和 Node.js
- 熟悉 Express.js 框架
- 了解 OAuth 2.0 认证流程和授权码模式
步骤
1. 配置 Google APIs
在 https://console.developers.google.com/ 创建一个 Google Cloud Platform 项目,或者在已有项目中添加 Google 登录 API。然后在 API 管理页面中创建一个 OAuth 客户端 ID,选择 Web 应用类型,并填写正确的重定向 URI。例如,如果你本地的 Express.js 服务器监听在 http://localhost:3000 上,那么重定向 URI 应该设置为 http://localhost:3000/auth/google/callback。记住生成的客户端 ID 和客户端密钥。
2. 安装依赖
使用 npm 命令行安装 express、passport、passport-google-oauth20 和 express-session 模块。如果你的 Web 应用已有这些依赖,则可以跳过此步骤。
--- ------- ------- -------- ----------------------- ---------------
3. 配置 Passport.js
在 Express.js 应用中添加 passport 和 express-session 中间件,并使用 passport 中间件进行初始化。然后添加两个路由:一个用于重定向到 Google 登录授权页面,另一个用于处理 Google 返回的授权码和访问令牌。在调用 passport.authenticate('google')
方法时,将自动生成一个 URL,用于发送给前端,让用户点击后跳转到授权页面。Google 授权是一个异步的过程,需要等待用户登录和同意授权。回调处理函数 passport.authenticate('google', { failureRedirect: '/login' })
将在 Google 返回授权码后被调用。此时要从 Google 获取用户个人资料信息,并将其保存在 session 中,以便在后续请求中进行身份验证。
----- ------- - ------------------- ----- -------- - -------------------- ----- -------------- - -------------------------------------------- ----- ------- - --------------------------- ----- --- - ---------- ----------------- ------- --------- ----- ------- ------ ------------------ ----- ---- ------------------------------- ---------------------------- ---------------- ---------------- --------- ----------------- ------------- --------------------- ------------ ------------------------ -- --------------------- ------------- -------- --- - -------- --------- - --- ------------------------------------- ----- - ---------- ------ --- --------------------------------------- ----- - ---------- ------ --- ----------------------- ------------------------------- - ------ ----------- ---- -------------------------------- ------------------------------- - ---------------- -------- --- ------------- ---- - -- ---------- --------------- -------- ----- ------------------ ---
4. 实现用户认证
为了实现用户认证,我们需要对 Express.js 的路由进行保护。在进入受保护的路由之前,检查是否有针对 Google 身份验证保存在 session 中的用户信息,如果有,则允许访问,否则跳转到登录页面。在上述示例代码中,只需添加一个名为 ensureAuthenticated
的中间件来执行该检查。该中间件可以在需要加入身份验证的路由中使用。
-------- ------------------------ ---- ----- - -- ----------------------- - ------ ------- - ----------------------- -
现在,你可以轻松地实现 Google 登录和用户认证功能。在实践过程中,你还可以使用其他的 OAuth 2.0 认证策略和数据存储方案,以满足更具体和复杂的需求。该示例代码只是一个演示,建议在实际应用中进行更适当的安全性和错误处理措施。
总结
在本文中,我们学习了如何在 Express.js 中使用 Passport.js 实现 Google 登录功能。Passport.js 可以帮助我们简化认证流程,方便地与 Google API 集成,提供了可扩展和灵活的认证策略和存储方案。Google 登录作为一种安全性和便利性兼备的第三方认证服务,可以将用户管理和隐私保护任务转交给 Google,从而减轻我们的负担并提高了可信度。希望本文的内容对你学习和实践 Web 开发有所帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64c487f583d39b4881808629