Rails CSRF token autenticidad y Devise

Tengo problemas con el token de autenticidad de Rails y el inicio/cierre de sesión de Devise.

Estoy usando backbone js para crear una aplicación de una sola página, así que uso ajax para iniciar/cerrar sesión del usuario. Esto es lo que estoy observando y no entiendo exactamente por qué sucede esto.

Tengo csrf_meta_tags en mi diseño. la página se carga, hago clic en un botón de inicio de sesión, lleno un formulario y lo envío, he iniciado sesión correctamente. Puedo hacer cosas que un usuario conectado debería poder hacer.

Ahora hago clic en un botón de cierre de sesión que envía una solicitud de ELIMINACIÓN a través de ajax y me desconecto con éxito.

Todo el proceso anterior está en una sola página, no se recarga la página, todo es ajax.

Ahora, cuando hago clic en iniciar sesión nuevamente y completo el formulario, envía la solicitud ajax, me registra pero muestra un mensaje de advertencia en la consola del servidor.

WARNING: Can't verify CSRF token authenticity

Ahora, ¿por qué (dispositivo) me inicié sesión, en primer lugar si (rieles) no pudo verificar la autenticidad del token CSRF?

y ahora, cuando trato de hacer cosas que un usuario conectado debería poder hacer, falla, la publicación de un formulario falla con un mensaje de error del dispositivo

401 Unauthorized {"error":"You need to sign in or sign up before continuing."}

y una advertencia en la consola del servidor

WARNING: Can't verify CSRF token authenticity

y en este punto estoy desconectado, si actualizo la página yo mismo puedo ver que ya no estoy conectado.

Que esta pasando ?

¿Caduca mi primer token de autenticidad después de cerrar sesión por primera vez?

Estoy utilizando

rails (3.2.3)
devise (2.1.0)

Gracias de antemano :)

preguntado el 31 de julio de 12 a las 10:07

Exactamente el mismo problema que tengo yo. Por favor comenta si has encontrado la solución. Gracias -

Sé por qué está surgiendo el problema. Se debe a que el token csrf caduca al cerrar la sesión y, dado que es un sign_out basado en ajax, la página no se vuelve a cargar y el nuevo token no aparece en la página, lo que provoca una falta de coincidencia en la solicitud posterior. por ahora estoy recargando la página en sign_out para solucionar el problema. Alguien (¿puede ser usted?) publicó lo mismo en la lista de correo del dispositivo. A ver si podemos conseguir algo allí... -

@Abid, recibí el mismo error con mi antiguo proyecto de rieles, me vuelve loco, ¿encontraste la solución? si tienes, háznoslo saber, tkx -

@Abid mismo error en mi aplicación. -

No sé si esto debería estar en una respuesta, si es así, házmelo saber :), tal vez esta sea tu respuesta stackoverflow.com/questions/11845500/… -

1 Respuestas

Tienes que enviar authenticity_token variable con todas sus solicitudes ajax. Puede completarlo desde la metaetiqueta de la página.

Respondido 31 Jul 12, 12:07

se esta enviando. el problema solo ocurre cuando inicio sesión por segunda vez ... parece que el token funciona solo para una sesión: Abid

Tengo el mismo problema y esta respuesta no ayuda. - William Judd

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.