2012-08-11 15 views
7

Estoy usando la gema delayed_job_web para monitorear trabajos demorados. https://github.com/ejschmitt/delayed_job_web¿Cómo uso Devise para proteger la interfaz de retraso de trabajo?

Es accesible a través de esta línea en mi routes.rb:

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

todas las otras áreas de mi sitio web requiere un inicio de sesión utilizando la gema inventar. ¿Cómo puedo hacer que esto requiera un inicio de sesión también?

En el readme, sugieren añadir lo siguiente a la config.rb:

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

Pero eso navegador utiliza la autenticación de texto sin formato.

ACTUALIZACIÓN: que hemos probado algo similar a la Railscast en resque, y yo creo que es a punto de trabajo, pero me da un bucle de redireccionamiento ahora:

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

alguna idea de por qué iba a estar dando una redirigir el bucle?

Gracias,

Respuesta

6

Uso authenticated en lugar de authenticate como se describe aquí: http://excid3.com/blog/rails-tip-5-authenticated-root-and-dashboard-routes-with-devise/

funciona para mí!

+0

Eso funcionó para mí también. Parece que la ruta no existe si no se ha iniciado sesión (no redirige la página de inicio de sesión), pero si se inicia sesión, todo funciona. Eso es lo suficientemente bueno para mí. Gracias. –

+1

Creo que esto es lo suficientemente útil como para que valga la pena agregarlo al archivo readme en el proyecto github? Todo lo que sugieren es http basic auth, que en realidad no es una solución. – nruth

1

Se podría hacer algo como esto a definir este archivo dentro de config/routes.rb

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

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

Alternativamente si usted tiene cancán para cualquier otra biblioteca de administración de funciones que podría hacer algo así como this

He utilizado ambas cosas en mis aplicaciones para controlar el acceso a resque-web según las necesidades de la aplicación

Esperanza esta ayuda

+0

eso no funcionó. –

+0

@IraHerman Extraño Funciona la versión de cancan – Viren

+0

No estoy usando cancan, así que no pude probarlo. –

0

Ahora es 2017 probé las otras soluciones y que no funcionó, pero la siguiente comprobación administrador hace el trabajo:

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