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