`client`标头值在devise_token_auth

时间:2017-12-10 08:50:25

标签: ruby-on-rails devise devise-token-auth

我正在尝试使用devise_token_auth(https://github.com/lynndylanhurley/devise_token_auth#conceptual)在rails中实现基于令牌的授权。

当我针对uid方法发布passwordsign_in时,会在标头中返回access-tokenclient(以及uid本身)。我知道基于令牌的授权是这样的:

  1. 用户将uid(id)和password发布到api服务器。
  2. Api服务器验证uidpassword
  3. 如果uidpassword匹配,则发出令牌并将其返回。
  4. 客户收到令牌。
  5. 客户端每当客户端想要访问身份验证所需的apis时,客户端使用uid和令牌来证明此客户端实际上已经过身份验证。
  6. 我可以理解access-token对应于上述说明中描述的令牌。这导致了我client标头值是什么的问题,因为根据官方Wiki(https://github.com/lynndylanhurley/devise_token_auth#usage-tldr),devise_auth_token库似乎不仅使用requires access-token而且{ {1}}值。

    问题:

    • 在devise_token_auth中,client标头值的目的是什么?为什么识别用户还需要它?无法包含在(或连接到)client值中吗?

1 个答案:

答案 0 :(得分:0)

为访问API的每个不同设备生成user.tokens标头。其目的是为特定用户(Web客户端,移动客户端等)维护多个活动会话。

您可以通过在2个单独的Web客户端上使用同一用户登录并检查select a.id, sum(a.sold+coalesce(b.sold,0)) from products a left join( select parent, sum(sold) sold from products group by parent) b on a.id=b.parent where a.parent=0 group by a.id 来测试这一点,每个客户端应该有一组令牌。