繁体   English   中英

设计默认情况下在Rails 4中允许所有属性

[英]Devise allowing all attributes by default in Rails 4

我目前正在执行以下操作:

Rails 4.0.2
设计3.2.2

从Devise文档中可以看出,默认情况下,“强参数”将阻止除以下属性以外的所有属性-电子邮件,密码,密码确认,current_password。

我在注册设计视图中编辑了new.html.erb,以包含三个附加属性-first_name,last_name,profile_name,如下所示。

<h2>Sign up</h2>

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>
  <div><%= f.label :first_name %><br />
    <%= f.text_field :first_name %></div>

  <div><%= f.label :last_name %><br />
    <%= f.text_field :last_name %></div>

  <div><%= f.label :profile_name %><br />
    <%= f.text_field :profile_name %></div>

  <div><%= f.label :email %><br />
  <%= f.email_field :email, :autofocus => true %></div>

  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>

  <div><%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %></div>

  <div><%= f.submit "Sign up" %></div>
<% end %>

<%= render "devise/shared/links" %>

由于某种原因,用户仍然可以通过在所有字段中输入信息进行注册,即使是我添加的新字段也是如此。 是否有理由默认情况下允许我的所有属性?

我是编程的新手,并且正在关注我的第一个Rails教程,所以我确定自己犯了一个完全显而易见的错误,但我无法弄清楚,并且无法通过在线搜索找到相同的问题。

谢谢

的Gemfile

gem "strong_parameters"

配置/ application.rb中

config.active_record.whitelist_attributes = false

aplication_controller

before_filter :configure_permitted_parameters, if: :devise_controller?


  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :first_name

  end

使用强大的参数时,客户端不会对是否允许使用这些字段进行隐式验证,但是除非您在控制器中明确允许它们,否则这些字段实际上不会保存到数据库 您应该能够通过在创建/更新操作期间观察服务器控制台来验证控制器是否阻止了这些字段。

用户可以输入,但不允许进行批量分配。 以下是来自Devise自述文件:

如果您想允许其他参数(lazy way™),可以在ApplicationController使用简单的before过滤器来完成:

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end

在Devise的README( 强参数)部分了解有关此内容的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM