2010-05-17 13 views
5

Estoy en las primeras etapas de crear una aplicación con Rails 3. La autenticación de usuario funciona con Authlogic, que tengo configurado como estándar (as per the example docs) y todo está funcionando como se espera a nivel local.Rails 3, autenticación básica Authlogic, NGINX y HTTP no funcionan muy bien juntos

Acabo de implementar la aplicación en una instalación limpia del servidor de Centos 5.4/NginX/Passenger para que el personal pueda iniciar sesión e ingresar contenido, etc. Sin embargo, estamos muy lejos de estar listos para los ojos del público así que he usado el módulo de autenticación básico de NginX para mantener todo el sitio detrás de otro nivel de autenticación.

Lamentablemente, la autenticación de Authlogic y la autenticación básica de NginX parecen estar en conflicto entre sí. Si la autenticación básica está activada, entonces es imposible iniciar sesión con Authlogic, pero si deshabilito la autenticación básica, Authlogic funciona como se esperaba.

No he publicado ningún código ya que no estoy seguro de qué código sería relevante. Me pregunto si este es un problema conocido y si hay algún cambio que pueda hacer en la configuración para evitar el problema.

Respuesta

13

Puedo responder mi propia pregunta (después de varias horas de buscar en el lugar equivocado). Una buena lectura en Authlogic::Session::Config hizo el truco.

class UserSession < Authlogic::Session::Base 
    allow_http_basic_auth false 
end 
+1

Wow ... muy contento de haberlo encontrado. Hace ya 3 días que intento resolver este problema. ¡Gracias! – zaius

+0

Gracias me ayudaron mucho. –

+0

¡Muchas gracias! – dangerousdave

1

Todavía no probé Rails 3, por lo que mi respuesta será más general. Y no conozco el módulo básico de autenticación para NginX.

  1. Si su equipo está conectado localmente, entonces puede crear un servidor accesible desde la red local solamente.
  2. Si necesita acceso a través de Internet, puede ocultarlo detrás de VPN.
  3. Puede establecer el acceso al sitio solo a través de la ip local y otorgar acceso ssh a cualquiera que lo necesite. Es fácil crear socks proxy a través de ssh (en linux: ssh -D 8080 [email protected]; donde 8080 es el número de puerto, luego configure socks proxy en el navegador y puede almorzar yoursever.com:3000).
  4. Creo que NginX le permite configurar direcciones IP permitidas y denegar otras, por lo que puede usarlas también para restringir el acceso.
  5. Y también puede agregar temporalmente a ApplicationControllerbefore_filter :require_login :), por lo que solo la página de inicio de sesión estará disponible para el mundo.

Espero que ayude!

+0

Gracias por sus sugerencias. Al final he respondido mi propia pregunta. La solución estaba en los documentos, solo necesitaba mirar lo suficiente. – aaronrussell

Cuestiones relacionadas