【发布时间】:2021-03-31 08:41:06
【问题描述】:
我正在尝试在基于 react apollo graphql 的应用程序上使用 google 进行完整的流身份验证。我将react-google-login 用于前端部分,将graphql / express 与google-auth-library 用于后端部分。 我当前的身份验证流程是:
- 从前端通过 react-google 登录获取 google 令牌 ID。
- 使用 tokenId 调用我的 graphql 服务器的 googleLogin 突变 参数。
- 在后端使用 react-auth-library 的 verifyIdToken 函数并获取 用户的有效负载并创建或获取与电子邮件匹配的用户 有效载荷。
- 在前端发送用户信息和当前 tokenId。
- 在前端,将后端的响应存储在上下文中 实例化用户会话并使用它来管理我的反应路由 应用程序。
我的授权流程几乎相同:graphql 上下文中的后端,从授权标头中检查令牌 ID,使用 google-auth-library 的 verifyIdToken 获取用户有效负载并返回找到的用户。在每个受保护的突变中,检查 graphql 上下文是否有用户字段。
在这个流程中,我遇到了几个问题,我没有解决方案来正确解决这个问题。我的第一个问题是当用户长时间连接时,我存储在授权标头中的 tokenId 被弃用。我不知道如何刷新用户连接。我唯一实际的解决方案是在服务器抛出身份验证错误时将用户重定向到登录页面,并且基本上使用 react-google-login 的自动登录来再次启动身份验证过程。 我担心我的身份验证/授权流程不好。如果有人对我的流程有任何建议或意见,请告诉我。提前感谢您的帮助
【问题讨论】:
标签: express authentication graphql react-apollo google-authentication