gpt4 book ai didi

ruby-on-rails - 使用 ActiveResource 和 session token 验证请求

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

我有一个 Rails API 和一个 Rails 客户端应用程序,它们通过 ActiveResource 相互通信。在我需要为每个 ActiveResource 请求传递唯一 token 以验证用户身份之前,这非常有效。据我了解,ActiveResource token 是在类级别设置的,不能轻易更改,如果我希望人们在经过身份验证后传递他们唯一的 session token ,这显然是一个问题。

这是我要实现的流程:

  1. 用户在客户端应用程序上提交凭据。
  2. 客户端应用程序将凭据传输到 API。
  3. API 通过 Devise 验证凭据并返回授权 token 。
  4. 客户端收到授权 token 并保存在 session 中。
  5. 来自客户的所有后续请求都包含授权 token 。
  6. API 使用包含的身份验证 token 对所有请求进行身份验证。

SO 和 Github 上有许多关于此的不同帖子。有人说it simply cannot be done ,其他人说 that you can force it, but there are issues with threading .

我怎样才能在不失去 ActiveResource 提供的巨大好处的情况下完成我想做的事情?

最佳答案

Active Resource在过去一年左右的时间里经历了相当大的更新,现在在现代网络中运行良好。

事件资源支持token based authentication由 Rails 通过使用自定义 header 的 ActionController::HttpAuthentication::Token 类提供。

class Person < ActiveResource::Base
self.headers['Authorization'] = 'Token token="abcd"'
end

您还可以使用相同的方式设置任何特定的 HTTP header 。如上所述, header 是线程安全的,因此您可以动态设置 header ,即使在多线程环境中也是如此:

ActiveResource::Base.headers['Authorization'] = current_session_api_token

我在 API Controller 中使用第二种方法非常成功地将 OAuth JWT 策略与 Active Resource 结合使用:

ActiveResource::Base.headers['Authorization'] = "Bearer #{jwt.token}"

关于ruby-on-rails - 使用 ActiveResource 和 session token 验证请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42208356/

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