可以在Roda应用程序中使用Rails authenticate_with_http_token吗?

时间:2019-03-13 02:09:24

标签: ruby-on-rails ruby roda

我使用Rails制作了一个使用authenticate_with_http_token方法进行身份验证的API。这很好。

API使用tus-ruby-server进行可恢复的文件上传。 Tus::Server是Roda应用程序。我可以使用hooks添加身份验证。它在Rails应用程序内运行(其端点安装在routes.rb中)。

Rails已经提供了authenticate_with_http_token,这是一种通过令牌进行身份验证的精心设计的实现。可以在这些挂钩内的Roda应用程序中以某种方式使用此方法吗?

到目前为止,我无法成功完成此工作,我结束了实现一种更简单的方法来读取标头并解析令牌的工作,这让我感到自己过度实现了Rails已经提供的功能,并且我做了解决方案远远不如Rails已经提供的功能强大。

我试图通过这种方式包含Rails方法。

# config/initializers/tus.rb
Tus::Server.before 
   extend ActionController::HttpAuthentication::Token::ControllerMethods
   authenticate_with_http_token { |token| User.find_by(token: token) }
end

但最终出现此错误。

NoMethodError: undefined method `authorization' for #<Tus::Server::RodaRequest:0x00007f9fe3b48450>

Roda请求无法理解称为hereActionDispatch::Request#authorization。我被困在这里,因为我不了解如何在RodaRequest对象中添加ActionDispatch方法。

我可能缺少明显的东西,但到目前为止我还没有看到。

我是否缺少让authenticate_with_http_token挂钩内的Tus::Server方法更基本的东西?

0 个答案:

没有答案