Можно ли использовать Rails authenticate_with_http_token с приложением Roda? - PullRequest
1 голос
/ 13 марта 2019

Я создал API с Rails, который аутентифицируется с использованием метода authenticate_with_http_token.Это работает отлично.

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>

Рода-запрос не распознает ActionDispatch::Request#authorization, называемый здесь .Я застрял здесь, так как не понимаю, как возможно добавить методы ActionDispatch в объект RodaRequest.

Возможно, мне не хватает чего-то очевидного, но пока я этого не вижу.

Мне не хватает чего-то более фундаментального, чтобы метод authenticate_with_http_token работал внутри хука Tus::Server?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...