2012-01-06 24 views
0

我正在製作一個kohana驗證器來驗證密碼的更改。我想在驗證器中插入檢查舊密碼是否與用戶引入舊密碼相匹配。我把這樣的規則:Kohana'等於'驗證器不接受sha1函數?

 ->rule(sha1('old_password'), 'equals', array($this->password)); 

但是......它似乎並沒有驗證,如果平等發生無論如何。怎麼可能? (如果我把輸入sha1驗證,拋出舊的通道與插入的通道不匹配的錯誤,但是,當然,它比較明文和在這種情況下加密的sha1。)

有什麼建議嗎?

+0

'this-> password' hashacked?你如何擁有'old_password'? – 2012-01-06 14:39:38

+0

yes this-> password是存儲在db中的用戶傳遞 - 已經被散列。 old_password作爲明文接收後通過 – dana 2012-01-06 14:44:56

回答

3

這不是你如何使用驗證規則。第一個參數是字段名稱,第二個參數是規則,第三個參數是傳遞給規則的參數。

+0

是的,這是真的。但就我而言,有沒有可能做出我想要的這種驗證?如果sha1('old_password')等於post所接收的值,直接從驗證器驗證?謝謝 – dana 2012-01-06 15:38:56

+0

也許:'rule('array_key','matches',array(':validation',':field',$ this-> password))' 您需要在數組中設置現有密碼,然後運行對其進行驗證,與新值進行比較。在你的例子中不清楚哪個是哪個。 – zombor 2012-01-06 16:29:45