2011-04-14 18 views
82

Bir iphone uygulamasına bazı apisler sunan bir ray uygulamasına sahibim. Doğru csrf belirtecini almayı düşünmeden bir kaynağa basitçe göndermek istiyorum. Stackoverflow'ta gördüğüm bazı yöntemleri denedim ama artık raylarda çalışmıyor gibi görünüyor. 3. Bana yardım ettiğiniz için teşekkür ederim.Raylardaki CSRF belirtecini kapatın 3

Eğer CSRF çek devre dışı bırakmak istediğiniz denetleyici olarak

cevap

132

:

skip_before_action :verify_authenticity_token 

Ya birkaç yöntemler dışında her şey için devre dışı bırakmak için:

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

Veya sadece belirtilen yöntemler devre dışı bırakmak için:

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

Daha fazla bilgi: RoR Request Forgery Protection

+1

Bu normal tarayıcı erişilebilir formlar ve API uç noktaları bir karışımına sahip uygulamalar için doğru cevaptır. Uygulamanızda tarayıcıda erişilebilir formlar bulundurmayacağınızdan kesinlikle eminseniz Markus Proske'nin yanıtı doğru olur. –

+0

Bu tam olarak nereye gidiyor? Bir geminin kontrol kısmı ne olursa? –

102

raylar 3. size belirli yöntemleri için denetleyici içinde csrf belirteci devre dışı bırakabilirsiniz: Raylar 4 ile

protect_from_forgery :except => :create 
+12

Okuma yapan herkes için, bunun ApplicationController'de ne yapılması gerektiğine dikkat edin. Mike Lewis'in aşağıdaki yanıtı ('skip_before_filter: veri_authenticity_token'), denetleyicinin 'ApplicationController''den devraldığı varsayılarak denetleyici temelinde nasıl devre dışı bırakılacağıdır. – NudeCanalTroll

+0

Bu güvenli olmayan bir http://stackoverflow.com/questions/10676018/security-safe-to-disable-csrf-tokens-for-json-rails-calls gibi görünüyor. Ne düşünüyorsun? bu mu? – juanpastas

+0

@NudeCanalTroll bunu kontrol etmek istemediğim kontrol cihazında çalışmak demek? – BlackDivine

28

, artık skip_before_action yerine skip_before_filter yazmak için seçeneğiniz vardır.

# Works in Rails 4 and 5 
skip_before_action :verify_authenticity_token 

veya

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

Fark nedir? –

+5

Doğru hatırlıyorsam, filtre kullanımdan kaldırıldı – nruth