2012-06-03 40 views
5

Tengo un lightbox de inicio de sesión que debe mostrarse cuando el usuario no está conectado. El lightbox está completamente implementado en javascript, fancybox y usa parciales de rieles para html.Cómo verifico si el usuario está conectado en Javascript

Veo que la cookie está configurada en cromo al iniciar sesión, pero document.cookie parece que está vacía. La razón probablemente se ha explicado here

¿Cómo puedo lograr esto en javascript/erb.

+3

¿Alguien realmente tiene una respuesta basada en js para esto, a diferencia de las dos respuestas enumeradas a continuación? – lulalala

+0

Probablemente imposible. Consulte http://stackoverflow.com/a/29739169/6594668 o use cookies en su lugar. – prograils

Respuesta

2

Manejar esto en el back-end. Si estás haciendo esto con rieles, asegúrate de usar y abusar de current_user, porque será tu mejor amigo.

Luego, en el parcial, usted es libre de tener algo como esto

<% if current_user %> 
    <p>Welcome <%= current_user.username %>!</p> 
<% else %> 
    <p>Please <%= link_to 'sign in', login_path %></p> 
<% end %> 

rieles Sesiones, Ruby on Rails Tutorial

+0

Gracias, quiero mostrar el lightbox en el envío del formulario. Esto ya está funcionando. Cuando el usuario inicia sesión, debo enviar el formulario original sin más interacciones del usuario. La llamada de inicio de sesión ajax agrega una cookie. Al usar el método que mencionaste, tendría que actualizar la página para saber si el usuario ha iniciado sesión para poder enviar el formulario original. – ShaggyInjun

+0

Cuando la página se actualiza, los datos del formulario se pierden a menos que tome la ruta compleja de guardar los datos del formulario en la memoria del navegador y vuelva a llenar el formulario cuando se cargue la página. Si puedo verificar la cookie, será más fácil. El resto está habilitado en el proyecto. ¿Existe un método de control de sesión de diseño que pueda hacer una llamada ajax para verificar que el usuario haya iniciado sesión? – ShaggyInjun

+0

@ShaggyInjun bien, creo que sé lo que estás preguntando. ¿Verifica si las credenciales de inicio de sesión son correctas antes de ocultar el lightbox? Si es así, cuando su programa responda (con AJAX) "sí, estas credenciales son correctas", también puede enviar los datos de usuario necesarios que desee, y luego manejar el resto con javascript. Tal vez algo así como '$ ('# welcome'). Text (data.username);' y si su lightbox es una forma ': remote => true', entonces puede manejar todo esto con' create.js.erb' en 'app/views/sessions'. Depende de cómo esté estructurada su aplicación. –

Cuestiones relacionadas