Rails 3でCSRFトークンをオフにする


105

iPhoneアプリケーションにいくつかのAPIを提供するRailsアプリがあります。正しいCSRFトークンを取得することを気にせずに、リソースに簡単に投稿できるようにしたい。私はここでstackoverflowで見られるいくつかの方法を試しましたが、レール3では機能しないようです。

助けてくれてありがとう。

回答:


175

CSRFを無効にするコントローラーで、次のチェックを行います。

skip_before_action :verify_authenticity_token

または、いくつかのメソッドを除くすべてに対して無効にするには:

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

または、指定したメソッドのみを無効にするには:

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

詳細:RoR Request Forgery Protection


1
これは、通常のブラウザーでアクセス可能なフォームとAPIエンドポイントが混在するアプリの正解です。Markus Proskeからの答えは、アプリでブラウザーからアクセス可能なフォームを作成するつもりがないことが確実である場合に正解です。
Asfand Qazi 2014

これはどこに行くのですか?一部の宝石のコントローラー部分はどうなりますか?
アカウント

この非常によく似た質問に答えてもらえますか?stackoverflow.com/questions/50159847/…–

105

Rails3では、特定のメソッドのコントローラーでcsrfトークンを無効にすることができます。

protect_from_forgery :except => :create 

12
読んでいる人のために、これは中に入るべきものであることに注意してくださいApplicationController。以下の(skip_before_filter :verify_authenticity_token)のMike Lewisの応答は、コントローラーがから継承すると仮定して、コントローラーごとにそれを無効にする方法ApplicationControllerです。
NudeCanalTroll 2013

これは安全ではないようです。stackoverflow.com/ questions/10676018/…。どう思いますか?それは...ですか?
サイト

@NudeCanalTrollあなたは私がそれが機能しないことを望む場所にこれをコントローラに置くことを意味しますか?
BlackDivine 2013年

この非常によく似た質問に答えてもらえますか?stackoverflow.com/questions/50159847/…–

32

Rails 4では、のskip_before_action代わりに書き込むオプションが利用できるようになりましたskip_before_filter

# Works in Rails 4 and 5
skip_before_action :verify_authenticity_token

または

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

1
違いは何ですか?
アダムD.ルッペ2015

この非常によく似た質問に答えてもらえますか?stackoverflow.com/questions/50159847/…–

ジョンサム、時間があるときにやってみようと思います。
jason328
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.