Как я могу пропустить проверку подлинности rails warden для маршрута sidekiq engine?

Я использую sidekiq 4.1.4 с Rails 4.2.6.

Файл маршрута имеет следующий код:

require 'sidekiq/web'
mount Sidekiq::Web, at: '/sidekiq'

Когда я получаю доступ к интерфейсу sidekiq через http://localhost:3000/sidekiq, он показывает ошибку:

{
    "errors": [
        "Unauthorized Request"
    ]
}

Я использую аутентификацию warden и файл инициализатора имеет такой код:

Rails.application.config.middleware.insert_after ActionDispatch::ParamsParser, Warden::Manager do |manager|
  manager.default_strategies :authentication_token
  manager.failure_app = UnauthenticatedController
end

1 ответ

Я смог получить доступ к sidekiq по адресу http://my_domain.com/sidekiq со следующими изменениями:

Создайте инициализатор с кодом ниже:

class MountedAppAuth
  def initialize( app )
    @app = app
  end

  def call( env )
    @app.call( env )
  end
end

В маршрутах.rb:

require 'sidekiq/web'
Sidekiq::Web.use MountedAppAuth
mount Sidekiq::Web, at: '/sidekiq'
Другие вопросы по тегам