📅  最后修改于: 2023-12-03 15:34:36.679000             🧑  作者: Mango
在 Rails 中,真实性令牌是一种防止 CSRF 攻击的安全机制。然而,在某些情况下,我们需要跳过这种令牌验证,例如在测试环境中或者通过 API 发送请求时。本文将介绍在 Rails 中如何跳过真实性令牌验证。
我们可以在控制器中使用 skip_before_action
方法来跳过一次真实性令牌验证。例如,下面的代码将跳过一次 verify_authenticity_token
:
class MyController < ApplicationController
skip_before_action :verify_authenticity_token, only: [:my_action]
def my_action
# ... your code here ...
end
end
在上面的例子中,我们只在 my_action
方法中跳过了一次验证。如果你想跳过多个方法的验证,可以像下面这样使用 only
参数:
class MyController < ApplicationController
skip_before_action :verify_authenticity_token, only: [:my_action1, :my_action2]
def my_action1
# ... your code here ...
end
def my_action2
# ... your code here ...
end
end
如果你想在控制器中跳过所有真实性令牌验证,可以在控制器类中使用 protect_from_forgery
方法,并指定 with: :null_session
或者 with: :exception
参数。
class MyController < ApplicationController
protect_from_forgery with: :null_session
# ... your code here ...
end
在上面的例子中,我们设置了 with: :null_session
,表示跳过所有真实性令牌的验证,并使用空会话来代替。
如果你想使用异常来代替空会话,可以设置 with: :exception
参数:
class MyController < ApplicationController
protect_from_forgery with: :exception
# ... your code here ...
end
虽然我们可以在控制器中跳过真实性令牌的验证,但在某些情况下这可能会导致安全问题。因此,建议在跳过验证时要非常小心,并遵循以下几点建议:
在 Rails 中跳过真实性令牌验证很容易,只需使用 skip_before_action
方法或 protect_from_forgery
方法。但在跳过验证时要非常小心,并遵循最佳实践,以确保应用程序的安全性。