2012-08-11 61 views
7

我使用delayed_job_web gem来监控延迟的工作。 https://github.com/ejschmitt/delayed_job_web如何使用Devise来确保delayed_job_web接口的安全?

它在我的routes.rb中使用此行是访问:

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

我的网站的每个其他区域需要使用设计的宝石登录。我如何使这需要登录?

在自述,他们建议增加以下到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 

有什么想法就可以了,为什么会被赋予一个重定向循环?

感谢,

回答

6

使用authenticated代替authenticate如下所述:http://excid3.com/blog/rails-tip-5-authenticated-root-and-dashboard-routes-with-devise/

对我的作品!

+0

这也适用于我。它看起来像路线不存在,如果没有登录(不重定向登录页面),但如果登录一切正常。这对我来说足够了。谢谢。 – 2012-09-18 22:50:37

+1

我认为这是有用的,值得添加到github项目的自述文件中?他们提出的所有建议是http basic auth,这不是一个真正的解决方案。 – nruth 2014-06-18 10:11:15

1

你可以做这样的事情定义这里面config/routes.rb文件

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

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

或者,如果您有任何其他角色管理库康康舞,你可以不喜欢它this

东西我在我的应用程序中使用了这两个功能,以根据应用程序的需要控制对resque-web的访问。

希望这有助于

+0

这没有奏效。 – 2012-08-13 20:24:30

+0

@IH赫尔曼奇怪卡农版本适合你 – Viren 2012-08-31 11:41:31

+0

我不使用卡康,所以无法尝试它。 – 2012-09-18 22:51:24

0

现在是2017年我尝试其他的解决方案,他们没有工作,但下面的管理员检查没有问题:

authenticated :user, -> user { user.admin? } do 
    mount DelayedJobWeb, at: "/delayed_job" 
end