当我的一个Rails控制器中调用某个方法时,我想检查用户的IP地址是否在可信列表中,如果是,则覆盖request.forgery_whitelisted?方法为true,以便不强制执行CSRF保护。
我读过的博客文章似乎暗示在控制器操作中声明以下内容会实现此目的,但它仍然会引发CSRF保护错误。
if request.remote_ip = "127.0.0.1"
def request.forgery_whitelisted?; true; end
end
是否还有其他地方需要及早覆盖方法以使其生效?
答案 0 :(得分:1)
以下任何一种都应该有效:
def verify_authenticity_token
super unless request.remote_ip = '127.0.0.1' # TODO: replace this with actual white-listing logic
end
module ActionDispatch
class Request
def forgery_whitelisted?
super if remote_ip == '127.0.0.1' # TODO: replace this with actual white-listing logic
end
end
end