我正在开发一个 Sinatra Web 应用程序,我计划在其中添加 Google 登录功能。
虽然我能够理解 Google 的 Oauth2 身份验证机制并且一切似乎都运行良好,但我有一个关于维护会话的基本问题。我正在使用 Oauth2 的服务器端 Web 应用程序流。
在我在这里问我的问题之前,是我对 Oauth2 身份验证机制的理解。
用户单击“使用 Google 登录”按钮后,事件顺序为:
- 用户被重定向到 Google oauth 授权服务器。
- Google oauth2 授权服务器检查用户是否有活动会话。
- 如果是,它会提示用户授予对我的应用程序的访问权限,以获取来自 Google 的请求数据。
- 如果用户授予访问权限,则发送回 auth_code 和获取访问令牌的过程开始。
根据我在网上遇到的情况,以上所有内容的代码都必须放在前置过滤器中。
我的问题如下:
- 如果我将此代码添加到之前的过滤器中,那么对于来自用户的应用程序的每个请求,都会往返于 Google 身份验证服务器。
- 我在上面的陈述 1 中的想法正确吗?
- 这是必要的吗?
- 对于对我的服务器的每个请求,是否有其他方法可以验证会话而无需访问 Google 服务器?
- 这不会造成开销吗?
- 使用 oauth2 的网络应用程序通常如何处理跨多个请求的会话有效性检查?
很抱歉这个冗长的问题,感谢您的耐心等待。