2016年11月20日 星期日

Strong Parameters

Strong Parameters 是 Devise 的功能;是用來限制使用者資料的資料輸入

params 是brower 傳向sever 的資料 hash;為了避免欄位被猜中遭hack,

Strong Parameters 用 .permit 方法限制允許的欄位資料通過

那麼怎麼用呢?在 controller 裡設一個 before_action ;def 裡面使用devise_parameter_sanitizer.permit 去決定設定限制的欄位

Rails 102 的範例程式
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

  before_action :configuer_permitted_parameters, if: :devise_controller?

  protected

  def configuer_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up) do |u|
      u.permit(:name, :email, :password, :password_confirmation)
    end
  end
end

上面除了:sign_up,還有 :sign_in 和 :account_update


Devise 的 Github
https://github.com/plataformatec/devise
搜尋 Strong Parameters 會找到標題,裡面有介紹上面 :sign_up 三個 action


Rails 101 的程式
http://courses.growthschool.com/courses/rails-101-4-0/lectures/229607

Rails 102 的範例程式
https://rocodev.gitbooks.io/rails-102/content/chapter1-mvc/c/strong_parameters.html

關於 if: :devise_controller?
http://www.rubydoc.info/github/plataformatec/devise/Devise%2FControllers%2FHelpers%3Adevise_controller%3F

還有
http://www.jianshu.com/p/6a0280bd2130

沒有留言:

張貼留言