用设计保护sidekiq管理员(记录的方式不工作)

时间:2016-03-14 18:56:26

标签: ruby-on-rails devise omniauth sidekiq

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

我想用devise保护/ sidekiq和/ sidekiq_monitor路由,但到目前为止,我遇到了很多麻烦。

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

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

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

可能的皱纹 - 我通过omniauth-saml登录,这意味着在这里混合发生了一些重定向 - 但是我的网站上的所有其他身份验证工作正常。我也只使用了一点点设计,只是:

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

在路线内尝试:

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

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