Ruby on rails 使用Desive保护sidekiq管理员(记录方式不起作用)
我有一个应用程序,它使用designe/omniauth进行身份验证,并运行一组sidekiq工作人员 我也想用Desive保护/sidekiq和/sidekiq_监控路线,但到目前为止,我在这方面遇到了很多麻烦 有文档记录的解决方案是在routes.rb中执行此操作:Ruby on rails 使用Desive保护sidekiq管理员(记录方式不起作用),ruby-on-rails,devise,omniauth,sidekiq,Ruby On Rails,Devise,Omniauth,Sidekiq,我有一个应用程序,它使用designe/omniauth进行身份验证,并运行一组sidekiq工作人员 我也想用Desive保护/sidekiq和/sidekiq_监控路线,但到目前为止,我在这方面遇到了很多麻烦 有文档记录的解决方案是在routes.rb中执行此操作: authenticate :user do mount Sidekiq::Web => '/sidekiq' end 但这对我来说不起作用——当我添加这一点时会发生什么?如果用户进入/sidekiq,无论其身份如何,
authenticate :user do
mount Sidekiq::Web => '/sidekiq'
end
但这对我来说不起作用——当我添加这一点时会发生什么?如果用户进入/sidekiq,无论其身份如何,都会提示他们登录,如果他们登录并返回/sidekiq,则会再次提示他们登录
可能的皱纹-我通过omniauth saml登录,这意味着一些重定向正在这里混合发生-但这对我网站上的所有其他auth都很好。我也只使用了很少的设计,只是:
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。必须将答案拿走-起初看起来它是有效的,但在重新加载几次后,问题又出现了。我想这是有效的。我的浏览器缓存出现了一些不稳定的情况,这让我很难说。这不会给页面添加designe auth,它会给页面添加一个完全不相关的基本auth。可能会有用,但这不是我正在寻找的解决方案。是的,它没有添加Desive auth。这是轻量级的,它可以工作,并且你不需要依赖于试图进入Desive的黑盒子。