【问题标题】:Devise Rails API设计 Rails API
【发布时间】:2016-03-06 11:05:13
【问题描述】:

谁能给我解释一下这行代码?

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

我应该使用它吗?为什么和为什么不。谢谢。

【问题讨论】:

标签: ruby-on-rails authentication devise token


【解决方案1】:

verify_authenticity_token 是 Rails 使用的 before_action(在每个控制器操作之前调用的方法,在 Rails 4 之前称为 before_filter)防止CSRF 攻击。 You can read more about how Rails does this here.

这行代码的意思是:“如果这是一个 JSON 请求,则跳过对该控制器的 CSRF 检查”。

这对于需要提供给不在同一个域中的远程站点的 JSON API 很有用,因此会导致 CSRF 检查失败。这是安全的,只要您确保the API is being authenticated properly。但是,如果您的控制器不会被外部 Web 应用程序使用(并且您只是在自己的站点上执行 AJAX 操作),那么请不要关闭 verify_authenticity_token 检查。

【讨论】:

  • 那么,你是说我的代码没有问题?在我的控制台上,对于 json 设计请求,日志显示“警告:无法验证 CSRF 令牌真实性”。危险吗?通过使用,我的 API 控制器是分开的。我的网络应用程序上还有一个 Rails 管理员。
  • @rlarcombe 会以另一种方式来说明您的身份验证警告:远程服务器是:“不要从您自己的 Rails 应用程序中调用这些未经 CSRF 检查的端点”?
  • @ChrisCameron - 是的,我想是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2013-09-04
  • 2014-01-25
  • 2012-09-01
  • 2013-10-18
相关资源
最近更新 更多