2012-08-11 11 views
7

Sto usando la gemma delayed_job_web per monitorare i lavori in ritardo. https://github.com/ejschmitt/delayed_job_webCome utilizzare Devise per proteggere l'interfaccia delayed_job_web?

E 'accessibile utilizzando questa linea nella mia routes.rb:

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

ogni altra area del mio sito richiede un login utilizzando la gemma Devise. Come posso fare in modo che sia necessario un login?

nel readme, si consiglia di aggiungere quanto segue alla config.rb:

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

Ma che utilizza solo l'autenticazione del browser solo testo.

UPDATE: Ho provato qualcosa di simile al Railscast su resque, e penso che sia sul punto di lavoro, ma mi dà un loop di reindirizzamento ora:

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

Dei pensieri su perché sarebbe dando un ciclo di reindirizzamento?

Grazie,

risposta

6

Uso authenticated invece di authenticate come descritto qui: http://excid3.com/blog/rails-tip-5-authenticated-root-and-dashboard-routes-with-devise/

funziona per me!

+0

Questo ha funzionato anche per me. Sembra che il percorso non esista se non è stato effettuato il login (non reindirizza la pagina di accesso), ma se è stato effettuato il login, tutto funziona. Questo è abbastanza buono per me. Grazie. –

+1

Penso che questo sia abbastanza utile per essere utile aggiungere al readme sul progetto github? Tutto ciò che suggeriscono è l'autenticazione di base http, che non è davvero una soluzione. – nruth

1

Si potrebbe fare qualcosa di simile a definire questo file all'interno config/routes.rb

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

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

In alternativa, se si dispone di cancan per qualsiasi altra libreria di gestione dei ruoli si potrebbe fare qualcosa di simile this

Ho usato entrambi nelle mie applicazioni per controllare l'accesso a resque-web in base alle esigenze dell'applicazione

Spero che questo aiuto

+0

che non ha funzionato. –

+0

@IraHerman Strange La versione cancan funziona per te – Viren

+0

Non sto utilizzando cancan, quindi non ho potuto provarlo. –

0

Ora è il 2017 ho provato le altre soluzioni e che non ha funzionato, ma il seguente controllo amministratore funziona:

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