Protect from forgery

Buenas!, tengo un problema, a ver tengo un cacheo de acción en una vista
donde se encuetra un
formulario de login, la cuestión es que la primera vez que se accede se
cachea la acción y puedo logearme correctamente.

Pero las siguientes veces hago uso de la versión cacheada y al intentar
acceder obtengo el error: “ActionController::InvalidAuthenticityToken”.

Parece que el problema es el uso del token del formulario que está
cacheado.
Entonces mi pregunta es:

¿Teniendo la protección CSRF activada no puedo cachear un formulario?,
si no
es así ¿Como?.

Gracias a todos.

2008/2/6 Miguel Ángel Martínez Triviño. [email protected]:

Entonces mi pregunta es:

Teóricamente tanto la caché de páginas como la caché de acciones
guardan una representación estática de la página, por lo que la
primera vez que alguién accediese al formulario el CSRF funcionaría,
pero las siguientes no funcionarían.

Seguramente utilizando cache de fragmentos y dejando fuera del sistema
de caché al formulario puedas utilizar la caché para la mayoría de la
página que contenga un formulario.

Pero claro, hablo de suposiciones, no lo he probado.

Ajam, gracias!, es algo que me temia. Pero vaya revés.

Espero que el protect from forgery nos proteja bien y merezca la pena,
porque no para de
darme problemas y limitaciones, que si problemas con ajax, que ahora con
el cacheo,…

Un saludo y gracias!

El día 6/02/08, Daniel R. Troitiño [email protected] escribió:

2008/2/6 Miguel Ángel Martínez Triviño. [email protected]:

Ajam, gracias!, es algo que me temia. Pero vaya revés.

Espero que el protect from forgery nos proteja bien y merezca la pena,
porque no para de
darme problemas y limitaciones, que si problemas con ajax, que ahora con
el cacheo,…

Un saludo y gracias!

Los problemas con AJAX se solucionan utillizando la línea:

skip_before_filter :verify_authenticity_token, :only =>
[:mi_accion_ajax_1, :mi_accion_ajax_2]

En los controladores que te interesen. Otra opción es montarselo de
forma que el código AJAX envié el código de verificación en sus
peticiones, supongo que modificando los plugins se podría hacer.