Q
設計和強大的參數
39
A
回答
52
更新色器件4.x的
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end
end
將兩個寶石後,設計將恢復正常。
更新:使用最新版本的Devise 3.x,如devise#strong-parameters所述,驗證密鑰(通常是電子郵件字段)和密碼字段已被允許。但是,如果註冊表單上有任何其他字段,則需要讓Devise知道允許的額外字段。要做到這一點最簡單的方法是用一個過濾器:
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
對於設計2.x中,如果使用需要明確的用戶模型白名單污點參數的安全功能:
include ActiveModel::ForbiddenAttributesProtection
的變化需要被發現在https://gist.github.com/3350730覆蓋了一些控制器。
8
簡單的方法是在ApplicationController中添加一個簡單的過濾器。如果你有不同的角色和/或其他更復雜的情況有以下鏈接其他選項:
1
before_filter :configure_sanitized_params, if: :devise_controller?
def configure_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:firstname, :designation_id ,:middlename, :previous_experiance_year,:previous_experiance_month,:lastname, :email, :username, :password, :password_confirmation, :previous_experiance,:empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone,:deactivated_date,:image)}
devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:remove_image,:firstname, :designation_id ,:middlename, :lastname, :email, :username, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date,:image)}
end
將此代碼複製並粘貼也代替您的應用程序控制器,:名字,和其他領域,你必須添加你的領域。
+0
是的,這是新的方法。該問題在設計未在其代碼上實現強參數的那一天被問到。 – 2015-09-15 14:36:01
相關問題
- 1. 改變設計的強大參數
- 2. 使用Rails 4.0和強大的參數設計
- 3. Omniauth和強大的參數
- 4. 強大的參數在軌道4.0簡單的設計實現
- 5. Rails 4設計強大的參數管理模型
- 6. 在Rails 4中設計3.0.0rc自定義屬性和強大的參數
- 7. Rails和Devise的強大參數
- 8. Rails 4.0.4強大的參數和設置模型?
- 9. 強大的參數屬性
- 10. 設計的強大的參數是不是一個白名單現場輸入
- 11. 強大的參數與JSON數組
- 12. 具有以下設計的強參數:current_password屬性
- 13. 自定義具有強參數的設計
- 14. 數據庫設計爲3個強大的實體集
- 15. Rails協會 - 強大的參數構建
- 16. 擴展寶石的強大參數
- 17. Carrierwave,Dropzone.js Rails 4,強大的參數
- 18. 強大的參數需要多個
- 19. RSpec - 測試強大的參數
- 20. 如何計算強大的數字
- 21. 強大的參數和嵌套的路線 - Rails的4.0
- 22. Rails設計參數
- 23. Rails 4 +設計用電子郵件或用戶名和強大的參數登錄
- 24. Android強大的參考
- 25. 全球化的Gem和Rails 4強大的參數
- 26. Rails 4,嵌套的屬性,強大的參數和JSON
- 27. Rails強大的參數不能識別我的參數
- 28. 軌道4 /設計/ MongoDB的:「不允許的參數」使用自定義屬性和強參數
- 29. 命令模式和參數設計
- 30. 重寫設計的參數
從我的角度來看,下一個答案是更好的,因爲它接受了Devise public API – msa7 2013-12-15 06:43:42
這將是因爲我的答案是一年多以前。我根據新的發展更新了答案。 – ronalchn 2013-12-15 09:14:13
這個問題是一個完美的例子,世界有多小,你用我自己的要求回答了我的問題= D – 2014-01-15 18:19:47