我正在尝试为我的 rails 应用程序构建一个 api。
当非获取请求中存在有效的 api_key 时,我想在过滤之前跳过 csrf。
我已经尝试过(一旦我可以让条件过滤器工作,我将验证 api_key)
(skip_before_filter :verify_authenticity_token) if params[:api_key].present?
但这不起作用...
有任何想法吗?
我正在尝试为我的 rails 应用程序构建一个 api。
当非获取请求中存在有效的 api_key 时,我想在过滤之前跳过 csrf。
我已经尝试过(一旦我可以让条件过滤器工作,我将验证 api_key)
(skip_before_filter :verify_authenticity_token) if params[:api_key].present?
但这不起作用...
有任何想法吗?
我认为这行不通,因为如果在创建控制器类期间评估表达式,那么params[:api_key].present?
在那一刻是错误的......你可以试试
skip_before_filter :verify_authenticity_token, :if =>lambda{ params[:api_key].present?}
导轨 3.2.13 -
上述解决方案都没有奏效(也许我做错了什么?)但这确实:
skip_before_filter :verify_authenticity_token, :if => :check_auth
def check_auth
request.headers["authentication_token"] == ENV['AUTH_KEY']
end
没有办法让 skip_before_filter 有条件。您不能在 skip_before_filter 上使用“if”。
尝试这个
skip_before_filter :verify_authenticity_token, :except => [], if params[:api_key].present?