attr_protected、 attr_accessible 解析
1:为什么使用这两个方法:
我们提交一个表单,该表单中有一些不可以让用户提交的字段,例如‘激活(active)’字段、‘用户权限(purview)’字段,但是怀有恶意的用户可以模拟表单提交这些属性,可以随意的给自己权限,而我们控制器中的取得属性的代码是Account.new(params[:account]),这句代码,会接受所有的用户模拟提交的account下的信息,此时我们不希望发生的事情发生了,我们要防止这种情况的发生,可以使用以上两个方法。
2:方法解释:
attr_protected: 指定某些字段不可以通过块来赋值,也就是说Account.new(params[:account])将无法接受这些指定字段,那么我们可以attr_protected :active, :purview 指定这两个字段,后台不会再接受用户恶意提交的这两个字段。
attr_accessible: 和attr_protected相反,指定只用某些字段可以通过块来提交,也就是说Account.new(params[:account])只能接受指定的字段,这样也可以防止用户的恶意提交。
3: 总结:其实attr_accessible就是限制提交的字段,attr_protected限制后台块接受的字段,通过这两种方式来防止用户的恶意提交。
分享到:
相关推荐
您可以将它们视为attr_protected和attr_accessible的控制器类似物。 安装 Rails的2.3.x版本 gem install param_protected -v "~> 1.0.0" Rails的3.0.x中 gem "param_protected" , "~> 2.0.0" 感谢提供了Rails 3...
不支持attr_protected 。 由于块的原因,可以为实例定义访问权限,而不仅仅是为类级别定义。 仍然可以定义类级别的可访问性,因此可以使用旧的attr_accessible :name 。 主要特点: 根据当前record状态添加可访问...
可访问强参数的属性 自动将 Rails 3 attr_accessible 转换为 Rails 4 强参数安装 $ gem install attr_accessible2strong_params用法 $ aa2sp [filename OR dirname OR .]运行aa2sp . 在您的 rails 根文件夹中,程序...
受保护的属性续 这是Rails 5+的社区的继续版本。... 此gem添加了attr_accessible和attr_protected类方法来声明属性的白色或黑色列表。 安装 将此行添加到您的应用程序的Gemfile : gem 'protected_attributes_continu
ActiveRecord :: Base attr_accessible :description , :title attr_accessible :image has_attached_file :imageend 为了处理附件,我正在使用 Paperclip。 我已经从下载并安装了 Plupload 在我连接了一些 ...
外部STI 通过关联使用继承扩展 STI。用法宝石档案: gem 'ext_sti', :git => 'git://github.com/fuCtor/ext_sti.git'楷模: ...end endclass ForumPost < Post attr_accessible :name ati_type :forumendclass Blo
attr_accessible :dads_pesel , :mums_pesel # this will give the access to methods: # dads_pesel_personal_data, mums_pesel_personal_data pesel_attr :dads_pesel , :mums_pesel # keep in mind that ...
`key`方法用于定义MongoMapper模型的字段,类似于Active Record中的`attr_accessor`或`attr_accessible`。 运行`rake db:migrate`,但请注意,MongoMapper不使用传统意义上的数据库迁移。这里的`migrate`任务实际上...
attr_accessible :first_name , :last_name , :job_title , :member_since end 创建演示者: # app/presenters/user_presenter.rb class UserPresenter < ShortCircuit :: Presenter def first_name @user
lazy_columns lazy_columns是一个Rails插件,可让您指定要在Active Record模型中延迟加载的列。 默认情况下,Active Records加载每个模型实例中的所有列。... attr_accessible :comments , :title en
PiggybakVariant Gem(引擎) Piggybak 的高级变体支持。... 您可能还需要在模型中添加适当的 attr_accessible 设置,具体取决于您的属性可访问性设置。 在管理中,为每个选项定义选项配置和选项值,然后为您的可
restpack_serializer 模型序列化、分页、旁加载和过滤restpack_serializer 允许您为应用程序快速提供一组 RESTful 端点。 它是新兴的标准的实现。... ActiveRecord :: Base attr_accessible :title ,
attr_accessible :first_name, :last_name, :nicknames end ``` 创建一个`User`对象并设置`nicknames`字段: ```ruby john = User.create(:first_name => 'John', :last_name => 'Doe', :nicknames => ['Jack', '...