Ruby on rails 关于RequestForgeryProtection for API请求的Rails文档
我正在读关于防止伪造的笔记,这几行真的让我困惑 请务必记住,XML或JSON请求也会受到影响,如果您正在构建API,则应更改ApplicationController中的伪造保护方法(默认情况下::exception):Ruby on rails 关于RequestForgeryProtection for API请求的Rails文档,ruby-on-rails,json,csrf,csrf-protection,Ruby On Rails,Json,Csrf,Csrf Protection,我正在读关于防止伪造的笔记,这几行真的让我困惑 请务必记住,XML或JSON请求也会受到影响,如果您正在构建API,则应更改ApplicationController中的伪造保护方法(默认情况下::exception): class ApplicationController{request.format.json?} 结束 CSRF保护通过protect_from_fackery方法打开。默认情况下,protect_from_forgery使用:null_session方法保护会话,该方法在
class ApplicationController{request.format.json?}
结束
CSRF保护通过protect_from_fackery方法打开。默认情况下,protect_from_forgery使用:null_session方法保护会话,该方法在请求期间提供空会话
它说异常是防止伪造的默认值,除非:->{request.format.json?}
,但后来说空会话是防止伪造的默认值
这是否意味着,如果我们使用防止伪造,除非:->{request.format.json?}
,异常将成为默认值?如果我们使用的是防止伪造
,空会话将成为默认会话
非常感谢您的帮助。如果有点混乱,文档是准确的;每个语句都引用不同的“默认”行为。第一条语句的意思是,新Rails应用程序的默认值是使用以下行生成ApplicationController:
protect_from_forgery :exception
但是,第二条语句的意思是,对于protect\u from\u forgery
方法,如果省略,参数的默认值是:null\u session
。因此,如果要从ApplicationController中删除:exception
,即,您刚刚:
protect_from_forgery
然后使用的行为将是:null_session
(请参阅以获取证据)
因此,第一条语句是指为新Rails应用程序生成的默认代码;第二条语句引用方法本身的默认值。但奇怪的是,他们是不同的
protect_from_forgery