如何在CakePHP中的密碼字段上運行驗證檢查,在我有機會運行任何檢查之前查看密碼被哈希?使用CakePHP 1.3驗證密碼
回答
如果你只在你的形式單一password
場,你將需要create a custom hash function,要麼什麼也不做,或者更好的,保留了原始密碼的地方。
很可能您的窗體中有兩個密碼字段,用戶需要確認密碼。在這種情況下,您需要在第二個密碼字段上執行密碼驗證規則。這可以在自定義驗證規則中自動發生,請記住您可以通過$this->data
訪問驗證功能中的所有其他字段。然後您可以確認這兩個密碼與described here相同。
我似乎遇到的問題是密碼在進入驗證階段之前被散列,因此我運行的驗證只適用於散列密碼。 – chustar 2010-07-01 00:05:24
@chustar這就是爲什麼你在'password2'字段進行驗證**,**不會自動散列。 – deceze 2010-07-01 00:07:56
這篇博客文章詳細說明了如何創建自定義哈希函數,以解決此問題:http://teknoid.wordpress.com/2008/10/08/demystifying-auth-features-in-cakephp-12 /(從第二個代碼示例開始讀取。) – deizel 2010-07-01 21:41:31
它以這種方式工作,我(模型):
public $validate = array(
'password' => array(
'minLength' => array(
'rule' => array('minLength', '8')
)
)
);
如果你想要做更多的驗證,然後創建相應的模型custom validation method。在自定義的驗證方法哈希密碼這樣:Security::hash($this->data['User']['password'], null, true)
當然這是有效的,因爲它總是**,因爲在驗證之前密碼被哈希,並且哈希總是超過8個字符。這對於強制使用8個字符或更長的非哈希密碼沒有任何作用。嘗試使用單個數字密碼測試您的表單 - 它會進行驗證。 – 2010-07-05 03:20:44
實際上,我不得不提及,我有'confirm_password'字段在相同的形式與相同的驗證規則。我很早以前就創建了這個表單,因此我忘記了在視圖中標記爲「密碼」,而在實際字段中我標記爲「確認密碼」。所以,當我輸入一個字符進行密碼驗證失敗時。 – bancer 2010-07-05 10:01:14
- 1. cakephp密碼驗證
- 2. CakePHP 1.3:$ this->驗證不驗證
- 3. 密碼確認驗證CakePHP
- 4. CakePHP登錄用戶名/密碼驗證
- 5. Cakephp 1.3模擬身份驗證
- 6. Cakephp 1.3模型驗證錯誤
- 7. CakePHP 1.3身份驗證組件在登錄時沒有散列密碼
- 8. cakephp表單驗證密碼比較
- 9. cakephp不驗證密碼字段
- 10. CakePHP 2 - 驗證密碼字段
- 11. CakePHP 2,如何使用純文本密碼驗證AuthComponent :: login()?
- 12. 使用CakePHP 2.2.5錯誤的密碼驗證消息
- 13. 密碼驗證
- 14. 驗證密碼
- 15. 驗證密碼
- 16. 使用X509Certificate2驗證證書密碼
- 17. 密碼驗證
- 18. 密碼驗證
- 19. 密碼驗證
- 20. 如何應用驗證密碼和驗證密碼
- 21. MySQL密碼加密驗證
- 22. Grails驗證密碼
- 23. PHP密碼驗證
- 24. php密碼驗證
- 25. 使用ssh啓用無密碼驗證
- 26. Liferay密碼驗證
- 27. 主密碼驗證?
- 28. Javascript密碼驗證
- 29. C密碼驗證?
我需要在散列之前對其進行驗證。我想檢查的主要事情是它的長度。 – chustar 2010-06-30 20:26:42
我沒有使用cakePHP,但不能在輸入上使用相同的哈希函數,然後將其與存儲的哈希密碼進行比較? – Catfish 2010-06-30 20:34:11