2011-04-14 16 views
82

tengo una aplicación de rieles que sirve algunas aplicaciones para una aplicación de iphone. Quiero poder simplemente publicar en un recurso sin tener en cuenta obtener el token csrf correcto. He intentado algún método que veo aquí en stackoverflow pero parece que ya no funcionan en los rieles 3. Gracias por ayudarme.Desactivar token CSRF en rieles 3

Respuesta

132

En el controlador en el que desea desactivar CSRF el cheque:

skip_before_action :verify_authenticity_token 

O para desactivarlo para todo excepto algunos métodos:

skip_before_action :verify_authenticity_token, :except => [:update, :create] 

O desactivar métodos sólo se especifica:

skip_before_action :verify_authenticity_token, :only => [:custom_auth, :update] 

Más información: RoR Request Forgery Protection

+1

Esta es la respuesta correcta para las aplicaciones que tienen una mezcla de formularios de explorador de ruedas regulares y los puntos finales de API. La respuesta de Markus Proske sería correcta si estuviera absolutamente seguro de que no iba a tener ningún formulario accesible en el navegador en su aplicación. –

+0

¿A dónde va exactamente esto? ¿Qué pasa si la parte del controlador de alguna gema? –

102

En Rails3 puede desactivar el token CSRF en su controlador de métodos particulares:

protect_from_forgery :except => :create 
+12

Para cualquiera que lea, tenga en cuenta que esto es lo que debería ir en 'ApplicationController'. La respuesta de Mike Lewis a continuación ('skip_before_filter: verify_authenticity_token') es cómo desactivarla según el controlador, suponiendo que el controlador hereda de' ApplicationController'. – NudeCanalTroll

+0

Parece que esto no es seguro http://stackoverflow.com/questions/10676018/security-safe-to-disable-csrf-tokens-for-json-rails-calls. ¿Qué piensas? ¿Lo es? – juanpastas

+0

@NudeCanalTroll ¿Quiere decir poner esto en el controlador donde yo quiero que no funcione? – BlackDivine

28

con los carriles 4, ahora tiene la opción de escribir en lugar de skip_before_actionskip_before_filter.

# Works in Rails 4 and 5 
skip_before_action :verify_authenticity_token 

o

# Works in Rails 3 and 4 (deprecated in Rails 4 and removed in Rails 5) 
skip_before_filter :verify_authenticity_token 
+0

¿Cuál es la diferencia? –

+5

Si no recuerdo mal, el filtro está en desuso – nruth

Cuestiones relacionadas