6

我正在尝试为我的 rails 应用程序构建一个 api。

当非获取请求中存在有效的 api_key 时,我想在过滤之前跳过 csrf。

我已经尝试过(一旦我可以让条件过滤器工作,我将验证 api_key)

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

但这不起作用...

有任何想法吗?

4

4 回答 4

7

我认为这行不通,因为如果在创建控制器类期间评估表达式,那么params[:api_key].present?在那一刻是错误的......你可以试试

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

于 2012-05-15T20:19:34.140 回答
0

导轨 3.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 回答