如何从access_token反向查找用户(Rails,Devise)

时间:2016-01-23 09:34:25

标签: ruby-on-rails ruby authentication devise access-token

My Rails应用程序登录/注销功能正常工作,并在登录后返回有效的access_token。

我正在使用这个宝石

https://github.com/lynndylanhurley/devise_token_auth

但是如何在后续请求中使用此access_token?例如:

abc.com/action?access_token=123

我想在我的控制器和动作方法中,我应该能够从这个access_token中找到用户,但我不确定是否可以使用Devise。

如果我也传入:client或:uid以及:access_token,我可以通过执行以下操作来验证此令牌:

user = User.find_by_uid uid
user.valid_token? access_token, client

是否可以通过他/她的access_token单独查找用户?

感谢。

1 个答案:

答案 0 :(得分:1)

根据文件:

  

access-token 这是每个请求的用户密码。该值的散列版本存储在数据库中以供稍后比较。 应在每次请求时更改此值

它似乎是使用BCrypt的标记化,并且每次都会更改安全性。

此外,他们不允许您从令牌中单独执行数据库中的用户查找安全漏洞。您可以选择以创造性方式存储UID,也可以选择在会话中存储查找,并在application_controller.rb中编写一个方法,然后对该数据执行某些逻辑。

这里提到:

  

uid 用于标识用户的唯一值。 这是必要的,因为通过访问令牌搜索用户数据库会使API易受timing attacks 的影响。