2012-08-11 63 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