1

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钩子内工作?

4

0 回答 0