如何通过HTTP标头或通过参数对用户进行身份验证

时间:2013-07-23 15:31:23

标签: ruby-on-rails ruby-on-rails-4

我正在使用Rails 4开发API,我正在尝试对用户进行身份验证。 每个用户都有一个唯一的api_key,我希望他们通过HTTP标头或params传递它。

我使用Rails提供的authenticate_or_request_with_http_token方法。

我试过这样的事情但是当我通过params传递api_key时它不起作用:

authenticate_or_request_with_http_token do |token, options|
   User.exists?(api_key: token) or User.exists?(api_key: params[:api_key])
end

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

好的我找到了问题的答案。 根据{{​​3}}上的文件 对于HTTP Header身份验证,如果根本找不到令牌,则返回nil。 所以对参数的测试根本不会执行。

所以我在HTTP标头之前测试params,让authenticate_or_request_with_http_token处理401未经授权的响应。

unless  User.exists?(api_key: params[:api_key])
  authenticate_or_request_with_http_token do |token, options|
    User.exists?(api_key: token)
  end
end
相关问题