6

Railsアプリケーション用のAPIを構築しようとしています。

有効なapi_keyが非getリクエストに存在する場合、フィルターの前にcsrfをスキップしたいと思います。

試しました(条件付きフィルターが機能するようになったら、api_keyを検証します)

(skip_before_filter :verify_authenticity_token) if params[:api_key].present?

しかし、それは機能しません...

何か案は?

4

4 に答える 4

7

コントローラクラスの作成中に式が評価される場合、params[:api_key].present?その時点ではfalseであるため、これは機能しないと思います...uは試すことができます

skip_before_filter :verify_authenticity_token, :if =>lambda{ params[:api_key].present?}

于 2012-05-15T20:19:34.140 に答える
0

Rails3.2.13-

上記の解決策はどれも機能しませんでした(多分私は何か間違ったことをしていましたか?)が、これは機能しました:

skip_before_filter :verify_authenticity_token, :if => :check_auth
def check_auth
  request.headers["authentication_token"] == ENV['AUTH_KEY']
end
于 2013-05-10T03:30:26.910 に答える
-1

skip_before_filterを条件付きにする方法はありません。skip_before_filterで「if」を使用することはできません。

于 2013-03-20T23:25:38.960 に答える
-2

これを試して

skip_before_filter :verify_authenticity_token, :except => [], if params[:api_key].present?
于 2012-05-15T20:29:40.277 に答える