11

我正在使用 Ruby 2.3.1 运行 Rails 5.0.0 应用程序

Sidekiq 被用于后台作业并设计用于身份验证。

Sidekiq 监控和设计安装在以下路线中:

devise_for :users, skip: [:sessions]
    as :user do
        get    'login' => 'devise/sessions#new',      :as => :new_user_session
        post   'login' => 'devise/sessions#create',   :as => :user_session
        delete 'logout' => 'devise/sessions#destroy', :as => :destroy_user_session
    end

require 'sidekiq/web'
    require 'sidekiq/cron/web'
    #Sidekiq::Web.set :session_secret, Rails.application.secrets[:secret_key_base]
    authenticate :user do
        mount Sidekiq::Web => '/sidekiq'
    end

但是,访问 sidekiq 状态页面会注销用户。

用于 Rails 4.2.5 的相同代码

4

2 回答 2

11

尝试将 Sidekiq 的安装包装在 下devise_scope,就像您as在路线中使用其别名“”一样devise_for

# Only allow authenticated users to get access
# to the Sidekiq web interface
devise_scope :user do
  authenticated :user do
    mount Sidekiq::Web => '/sidekiq'
  end
end
于 2016-08-04T11:41:06.917 回答
2

这是一个允许对 Sidekiq 路由进行自定义身份验证的代码段。

authenticate :user, ->(user) { user.admin? || Other auth related checks... } do
  mount Sidekiq::Web => "/sidekiq"
end
于 2021-03-02T15:06:29.723 回答