Aynı sorunu yaşadım ama sayfa önbelleğe alınmış sayfalarda. Sayfalar eski bir kimlik doğrulama jetonu ve sahtekarlık girişimi olarak tanındığında post / put / delete yöntemlerini kullanarak tüm eylemlerle arabelleğe alındı. Hata (422 İşlenemeyen Varlık) kullanıcıya geri döndü.
Rails 3 için çözüm:
Ekle:
skip_before_filter :verify_authenticity_token
veya Rails 4'te belirtildiği gibi "sagivo" olarak ekleyin:
skip_before_action :verify_authenticity_token
Önbellekleme yapan sayfalarda.
@Toobulkeh yorumladı gibi bu konuda bir güvenlik açığı değil :index
, :show
eylemler, ancak bu kullanarak dikkat :put
, :post
eylemler.
Örneğin:
caches_page :index, :show
skip_before_filter :verify_authenticity_token, :only => [:index, :show]
Referans: http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html
Barlop- Rails 4.2 tarafından eklenen not, skip_before_action lehine skip_before_filter kullanımdan kaldırıldı https://guides.rubyonrails.org/4_2_release_notes.html "* _filter yöntem ailesi dokümantasyondan kaldırıldı. * _Action lehine kullanımı önerilmez yöntem ailesi "
İçin Raylar 6 kullanabilirsiniz ( "collimarco" belirttiği gibi) skip_forgery_protection
ve oturum verileri kullanmayan bir REST API için kullanmak güvenli olduğunu.