首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ActiveResource和会话令牌验证请求

使用ActiveResource和会话令牌验证请求
EN

Stack Overflow用户
提问于 2017-02-13 16:01:48
回答 1查看 1.1K关注 0票数 3

我有一个rails API和一个通过ActiveResource相互通信的rails客户端应用程序。这很好,直到我需要在每个ActiveResource请求中传递一个唯一的令牌来验证用户。据我所知,ActiveResource令牌是在类级别上设置的,并且很难更改,如果我希望人们在经过身份验证后传递其唯一的会话令牌,这显然是一个问题。

下面是我正在努力实现的流程:

  1. 用户在客户端应用程序上提交凭据。
  2. 客户端应用程序向API传输凭据。
  3. API通过Devise验证凭据,并返回一个auth令牌。
  4. 客户端接收令牌并在会话中保存。
  5. 来自客户端的所有后续请求都包括auth令牌。
  6. API使用包含的auth令牌对所有请求进行身份验证。

关于这一点,有很多关于SO和Github的不同帖子。有人说这根本做不到,另一些人说你可以强迫它,但是线程处理有问题

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-09 02:44:59

主动资源在过去的一年中经历了相当大的更新,现在在现代网络中运行良好。

Active Resource使用自定义标头支持Rails通过ActionController::HttpAuthentication::Token类提供的基于令牌的认证

代码语言:javascript
复制
class Person < ActiveResource::Base
  self.headers['Authorization'] = 'Token token="abcd"'
end

您还可以使用相同的方式设置任何特定的HTTP报头。如前所述,标头是线程安全的,因此可以动态地设置,甚至在多线程环境中也是如此。

代码语言:javascript
复制
ActiveResource::Base.headers['Authorization'] = current_session_api_token

我使用了Active Resource的OAuth JWT策略,非常成功地在API控制器中使用了第二种方法:

代码语言:javascript
复制
ActiveResource::Base.headers['Authorization'] = "Bearer #{jwt.token}"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42208356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档