0

我来自 Pyton 编程语言,理解并可以阅读 C/C++。但是,我只在 ruby​​ 上工作了几个星期,并且在阅读 Rails 中更复杂的代码时遇到了麻烦。

我看到在 ruby​​ 中的变量之后有很多文档、博客和对 ':' 的引用,从我研究和阅读的内容来看,这是一个符号。我以为我理解了这个的基本概念,但是当我阅读application_controller.rb的 rails 代码时我感到很困惑

我试图确定这与这段代码的关系。我假设protect_from_forgery with: :exception是一个传递参数的函数: 和:exception?

class ApplicationController < ActionController::Base
    # Prevent CSRF attacks by raisng an exception 
    protect_from_forgery with: :exception

我正在阅读https://api.rubyonrails.org/classes/ActionController/Base.html上的文档。并试图通过 rails 教程,但我在理解这个 ruby​​ 语法时遇到了困难。

4

1 回答 1

1

正如您正确提到的,防止伪造方法采用可选的哈希参数。所以本质上,它转化为

protect_from_forgery({with: :exception})

您可以在以下链接中检查该方法的实现

https://github.com/rails/rails/blob/b738f1930f3c82f51741ef7241c1fee691d7deb2/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L135

于 2020-05-13T02:10:57.767 回答