Rails-设计路线和Sidekiq路线 [英] Rails - devise and sidekiq routes

查看:61
本文介绍了Rails-设计路线和Sidekiq路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am running a Rails 5.0.0 app with Ruby 2.3.1

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

Sidekiq is being used for background jobs and devise for authentication.

Sidekiq监视和设计在以下路线中进行安装:

Sidekiq monitoring and devise are mounted in routes as follows:

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状态页面会将用户注销.

But, accessing the sidekiq status page logs out the user.

用于Rails 4.2.5的相同代码

The same code used to work fine with Rails 4.2.5

推荐答案

尝试将Sidekiq的安装包包裹在 devise_scope 下,就像您使用别名" as devise_for 路线中的"code>":

Try wrapping your mounting of Sidekiq under devise_scope, in the same way you're using its alias "as" in your devise_for route:

# 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

这篇关于Rails-设计路线和Sidekiq路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆