我使用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请求无法理解称为here的ActionDispatch::Request#authorization
。我被困在这里,因为我不了解如何在RodaRequest
对象中添加ActionDispatch方法。
我可能缺少明显的东西,但到目前为止我还没有看到。
我是否缺少让authenticate_with_http_token
挂钩内的Tus::Server
方法更基本的东西?