使用设计保护 sidekiq 管理员(记录的方法不起作用)

Protect sidekiq admin with devise (documented way not working)

我有一个使用 devise/omniauth 进行身份验证的应用程序,并运行了一堆 sidekiq worker。

我也想用设计来保护 /sidekiq 和 /sidekiq_monitor 路由,但到目前为止我 运行 在这方面遇到了很多麻烦。

记录的解决方案是在 routes.rb 中执行此操作:

authenticate :user do
  mount Sidekiq::Web => '/sidekiq'
end

但这对我不起作用 - 当我添加时发生的事情是,如果用户转到 /sidekiq,无论​​他们的身份验证状态如何,他们都会被提示登录,如果他们登录并返回 /sidekiq他们再次被提示登录。

可能存在问题 - 我正在通过 omniauth-saml 登录,这意味着此处混合使用了一些重定向 - 但我网站上的所有其他身份验证都可以正常工作。我也只使用了很少的设计,只是:

devise :rememberable, :trackable, :omniauthable, :omniauth_providers => [:saml]

在你的路线中试试这个:

Sidekiq::Web.use Rack::Auth::Basic do |username, password|
   username == USERNAME && password == PASSWORD
end if Rails.env.production?

mount Sidekiq::Web, at: "/sidekiq"

尝试将您的 routes.rb 文件更改为:

authenticate :user do
  mount Sidekiq::Web, at: "/sidekiq"
end

另请注意 :user 指的是您的应用用户模型。如果您的用户模型有其他名称,比如 :admin,您应该将上面截取的代码中的 :user 替换为 :admin。