def restrict_access
# raise ApiKey.exists?(access_token: params[:token]).to_s
authenticate_or_request_with_http_token do |token, options|
ApiKey.exists?(access_token: token)
end
end
ApiKey.exists?(access_token: token)
会返回true
,但每次调用此def都会返回HTTP Token: Access denied.
,我不知道为什么。我甚至可以硬编码正确的令牌,但它仍然失败。它似乎只是在开发和测试中这样做,但在刺激我的工作。它也刚刚开始发生似乎突然出现。我甚至无法调试authenticate_or_request_with_http_token块中的任何内容,它在ApiKey.exists之前将我踢出去?()甚至被执行。
我看过这个来源,但对我来说并不是那么有用。 https://github.com/rails/rails/blob/04cda1848cb847c2bdad0bfc12160dc8d5547775/actionpack/lib/action_controller/metal/http_authentication.rb#L393
答案 0 :(得分:-1)
文档中有一个注释,也许你有这个问题:
在共享主机上,Apache有时不会传递身份验证标头 到FCGI实例。如果您的环境符合此描述并且 您无法进行身份验证,请在Apache设置中尝试此规则:
RewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.html