为json请求禁用ActionController :: InvalidAuthenticityToken?

时间:2016-09-06 13:59:41

标签: ruby-on-rails

我知道这个问题已在本论坛中提出过。但它对我不起作用。

我的要求是这样的

     if request.type.json?
       #disbale `ActionController::InvalidAuthenticityToken`
     else
     # enable `ActionController::InvalidAuthenticityToken`
     end

任何想法!!怎么实现这个?

2 个答案:

答案 0 :(得分:2)

来自最新Rails版本的RDoc

skip_before_action :verify_authenticity_token

如果您发现它开始起作用,您可以限制它何时附加:

skip_before_action :verify_authenticity_token, 
    if: Proc.new { |c| c.request.format == 'application/json' }

如果您正在处理其他格式,您可以调试以查看您正在使用哪种请求格式以禁用它。

答案 1 :(得分:1)

RequestForgeryProtection documentation建议仅为JSON禁用CSRF。

class ApplicationController < ActionController::Base
 protect_from_forgery unless: -> { request.format.json? }
end