authenticate_with_http_token
我用 Rails 制作了一个 API,它使用方法进行身份验证 。这很好用。
API 使用tus-ruby-server进行可恢复的文件上传。Tus::Server
是一个罗达应用程序。我可以使用挂钩来添加身份验证。它在 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>
罗达请求不明白这里ActionDispatch::Request#authorization
的调用。我被困在这里,因为我不明白如何在对象中添加 ActionDispatch 方法。RodaRequest
我可能遗漏了一些明显的东西,但到目前为止我还没有看到它。
我是否遗漏了一些更基本的东西来让该authenticate_with_http_token
方法在Tus::Server
钩子内工作?