gpt4 book ai didi

ruby - 设计之外的 Omniauth 策略

转载 作者:数据小太阳 更新时间:2023-10-29 08:13:58 27 4
gpt4 key购买 nike

我已经为 Google 登录设置了 devise + omniauth。它在网络上运行良好。我现在正在考虑将 oauth 登录集成到 iOS/Android 客户端。

我一直在关注 https://developers.google.com/identity/sign-in/ios/backend-auth并发现我用于 oauth 的库执行这些操作(https://github.com/zquestz/omniauth-google-oauth2/blob/master/lib/omniauth/strategies/google_oauth2.rb)。

我不清楚的是,我是否可以在常规 Web 工作流程之外使用 omniauth 策略(即来自 rails console)来构建一个伪 request.env["omniauth.授权"]。这样的事情可能吗?根据文档 https://developers.google.com/identity/sign-in/ios/backend-auth#using-a-google-api-client-library我想在 Ruby 中做同样的事情(我不清楚我是否可以直接使用 Devise 来做到这一点)。

最佳答案

在控制台中模拟请求非常简单。您可以轻松地向控制台提供的 app 变量发出请求:

app.get('/') # => 200
app.response # => #<ActionDispatch::TestResponse:0x007fc73e4db220>

至于处理身份验证,标准 Rails 应用程序在 Web 上使用基于 cookie/ session 的身份验证策略。在您第一次进行身份验证后,一些信息会存储在 session 中(通常作为 cookie),您和服务器将在每次请求时来回传递这些信息。

由于移动客户端不依赖于 cookie,我们需要不同的身份验证策略:token-based authentication .

这里是一个可以与 Omniauth 一起工作的高级实现:

  1. 用户通过向 Omniauth 端点发出请求来请求通过 Omniauth 提供商访问
  2. 应用程序处理凭据
  3. 应用程序向客户端提供签名 token
  4. 客户端存储该 token 并将其与每个请求一起发送
  5. 服务器验证token并返回数据

要处理移动请求,您需要小心遵守提供商 Omniauth gem 的细则.

Token 身份验证过去曾内置于 Devise 中,但已被删除。值得庆幸的是,有一些 gem 可以为 Devise 添加 token 身份验证:

关于ruby - 设计之外的 Omniauth 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43548637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com