2012-04-27 62 views
3

我正在使用Rails 3.2和Doorkeeper gem爲第三方提供OAuth 2 API。我一直用我的REST API時,從應用程序之外得到這樣的警告:Rails/Doorkeeper:無法驗證CSRF令牌的真實性

警告:無法驗證CSRF令牌真實性

通過OAuth2用戶成功驗證的客戶端應用程序。爲什麼我會收到此警告,以及如何正確實施此外部API的csrf?

+2

你不應該爲無狀態API實現'csrf'。它打破了無國界的整個概念。 – 2012-04-27 13:22:08

+0

我還沒有實現API的csrf,我只是從Rails得到這個警告。我可以跳過某些方法的csrf有效性檢查嗎? – 2012-04-27 13:25:42

回答

6

從您的ApplicationController中刪除protect_from_forgery(或移除它以調用API)。

+0

從應用程序控制器中刪除protect_from_forgery不安全,因爲這會將應用程序打開到CSRF攻擊。 – 2015-10-02 15:19:29

2

僅關閉要打開的控制器的CSRF保護...這比從ApplicationController中刪除protect_from_forgery更安全。在這種情況下,我使用create action作爲示例...雖然您可以修改以適合您的需求。

class MessagesController < ApplicationController 
    protect_from_forgery with: :null_session, only: [:create] 
    # doorkeeper_for :create 
end 

如果您是通過門衛進行身份驗證,請取消註釋守門線。

關鍵是要打開什麼需要打開...

相關問題