2015-12-02 64 views
0

可有人會向我解釋這行代碼?設計Rails的API

skip_before_filter :verify_authenticity_token, :if => Proc.new { |c| c.request.format == 'application/json' } 

我應該使用它嗎?爲什麼,爲什麼不。謝謝。

+0

另請參閱http://stackoverflow.com/questions/23773730/rails-4-skipping-protect-from-forgery-for-api-actions –

回答

1

verify_authenticity_tokenbefore_action(每一個控制器操作之前調用的方法,被稱爲的before_filter前導軌4)Rails使用從CSRF攻擊保護。 You can read more about how Rails does this here

這行代碼的意思是:「如果這是那麼JSON請求跳過此控制器CSRF檢查」。

這對於需要提供給遠程站點不屬於同一域,所以也就無法通過CSRF檢查JSON API的有用。這是安全的,只要你確定the API is being authenticated properly。但是,如果你的控制器不會通過外部Web應用程序中使用(和你只是在做AJAX的東西在自己的網站),然後不關閉verify_authenticity_token檢查。

+0

所以,你說我的代碼沒有錯?在我的控制檯上,日誌中顯示「警告:無法驗證CSRF令牌的真實性」。危險嗎?通過使用,我的API控制器是獨立的。我的網絡應用程序也有一個rails管理員。 – ana

+0

謝謝您的幫助:) – ana

+0

有這個帖子的讀:http://stackoverflow.com/questions/9362910/rails-warning-cant-verify-csrf-token-authenticity-for-json-devise-requests – rlarcombe