【问题标题】:is it necessary or good practice to sanitize the parameters for all three devise actions?清理所有三个设计操作的参数是否有必要或良好做法?
【发布时间】:2017-10-03 04:04:25
【问题描述】:

Devise docs 声明允许将参数向下传递到模型的三个操作::sign_up、:sign_in 和:account_update。以下示例(基于他们的文档)建议我使用前置过滤器。

protected 

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :username, :website, :invitation_code])
end

他们没有明确说明同时清理其他两个操作的参数是一个好主意,或者清理其他(非设计)模型参数是否是个好主意。这就是我感到困惑的地方。我应该添加到上面的代码中吗?

protected 

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :username, :website, :invitation_code])
  devise_parameter_sanitizer.permit(:sign_in, keys: [:email, :username, :password])
  devise_parameter_sanitizer.permit(:account_update, keys: [:email, :firstname, :lastname, :password, :password_confirmation, :website])
end

另外,我怎么知道参数正在被转换为哈希?

【问题讨论】:

    标签: ruby-on-rails authentication model-view-controller devise


    【解决方案1】:

    您无需清理从未使用过的参数。大概在您的登录(设计中的:sign_in)中,您只使用了usernamepassword,因此不需要在那里清理任何额外的参数。

    如果用户可以在您的编辑表单中更新他/她的first_namewebsite 等,那么您将需要 :account_update 参数。

    【讨论】:

    • 这是有道理的。因此,我需要为每个操作提供一种消毒方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2013-02-14
    • 2017-11-03
    • 2011-10-08
    • 2021-11-13
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多