8

我正在使用delayed_job_web gem 来监控延迟的工作。https://github.com/ejschmitt/delayed_job_web

可以使用我的 routes.rb 中的这一行来访问它:

match "/delayed_job" => DelayedJobWeb, :anchor => false

我网站的所有其他区域都需要使用 Devise gem 登录。我如何使这也需要登录?

在自述文件中,他们建议将以下内容添加到 config.rb:

if Rails.env.production?
  DelayedJobWeb.use Rack::Auth::Basic do |username, password|
    username == 'username'
    password == 'password'
  end
end

但这只是使用纯文本浏览器身份验证。

更新:我在 resque 上尝试了类似于 railscast 的东西,我认为它即将开始工作,但现在给了我一个重定向循环:

  authenticate :admin do
    mount DelayedJobWeb, :at => "/delayed_job"
  end

关于为什么会给出重定向循环的任何想法?

谢谢,

4

3 回答 3

7

使用这里描述authenticated的代替:http: //excid3.com/blog/rails-tip-5-authenticated-root-and-dashboard-routes-with-devise/authenticate

为我工作!

于 2012-09-12T09:34:51.377 回答
1

你可以做这样的事情来定义这个内部config/routes.rb文件

  authenticate_user = lambda do |request|   
     request.env['warden'].authenticate?
  end

  constraints authenticate_user do
    mount DelayedJobWeb, :at => "/delayed_job"
  end

或者,如果您有任何其他角色管理库的 cancan,您可以这样

我在我的应用程序中使用了这两种方法来控制对 resque-web 的访问,具体取决于应用程序的需要

希望这有帮助

于 2012-08-11T14:45:31.017 回答
0

现在是 2017 年,我尝试了其他解决方案,但它们没有用,但以下管理员检查确实有效:

authenticated :user, -> user { user.admin? }  do
  mount DelayedJobWeb, at: "/delayed_job"
end
于 2017-02-09T17:00:21.650 回答