2012-04-20 15 views
14

Tengo una aplicación de rails 3 que utiliza el dispositivo para la autenticación y quiero usar javascript para ver si un usuario ha iniciado sesión. ¿Cuál es la mejor manera de hacerlo?Use javascript para verificar si ha iniciado sesión con el dispositivo

+0

favor Agregue más detalles para obtener un mejor asesoramiento – ControlAltDel

+0

¿Qué otros detalles podrían ser necesarios? Uso el diseño para la autenticación en mi aplicación, y quiero saber cómo verificar si un usuario está autenticado usando JavaScript. – Solomon

+0

@Solomon: No sé cómo funciona Rails, pero puedes buscar cookies (PHP) o entradas ocultas (ASP.NET) para ver la identificación de la sesión. –

Respuesta

15

Desde Idear se basa en Warden, puede utilizar devoluciones de llamada de Warden para establecer una cookie de adicional que será visible desde js (al contrario que el servidor sólo cookie de sesión), por ejemplo, en su devise.rb:

Warden::Manager.after_set_user do |user,auth,opts| 
    auth.cookies[:signed_in] = 1 
    end 

    Warden::Manager.before_logout do |user,auth,opts| 
    auth.cookies.delete :signed_in 
    end 
+1

¿Funciona con Rails 4? – SsouLlesS

+1

@SsouLlesS Casi. Tuve que cambiar la línea de eliminación (por alguna razón, 'cookies.delete' no eliminaba la cookie del navegador. Le asigné' 0' como 'valor' y' expire' a 'Time.now' al cerrar la sesión. –

-2

Parece que Rails almacena la sesión en el cliente en el cookies.

Me echa para las cookies en su aplicación cuando está conectado (console.log(document.cookies)) y ver lo que hay es no existe cuando se está desconectado.

De esta manera, verá cómo verificar si está conectado o no al cliente.

+0

esto es lo que obtengo cuando reviso document.cookie, y no funciona t marcar la diferencia si está conectado o desconectado: __utma = 111872281.2045911381.1309470856.1334590129.1334935149.157; __utmz = 111872281.1309470856.1.1.utmcsr = (directo) | utmccn = (directo) | utmcmd = (ninguno); __utmc = 111872281 – Solomon

+1

Las cookies de diseño son HttpOnly lo que significa que no puedes leerlas desde javascript. Para que esto funcione, creo que deberías establecer tu propia cookie. – Steve

Cuestiones relacionadas