3
我試圖在Yii中實現phpass認證,但每次都失敗。我一直在閱讀很多SO文章,還沒有找到解決方案,所以我認爲這必須是Yii的特定問題。phi認證在Yii中失敗
在user.php的我節省哈希密碼:
public function beforeSave() {
$phpass = new PasswordHash(8, false);
$hash = $phpass->HashPassword($this->user_pass);
$this->user_pass = $hash;
return true;
}
在的UserIdentity我檢查密碼:
public static function isPasswordValid($plainPass, $hashedPass) {
$phpass = new PasswordHash(8, false);
$isValid = $phpass->CheckPassword($plainPass, $hashedPass);
if($isValid){
return true;
}
return false;
}
$hashedPass
是走出分貝,plainPass
是什麼用戶剛剛進入表格,但$isValid
一直返回false。逸岸我拿出哈希密碼從數據庫中,我手動應用它,它仍然失敗:
$isValid = $phpass->CheckPassword('password', '$2a$08$P9X8duz7S8LOysz1XIn3fe/YYW3dwAs2busSBIX/QnZhKH/R9/H1S')
我檢查,以確保哈希密碼是不是在插入數據庫截斷,這是不...我已經調整了我的密碼字段爲varchar 60
按照另一個SO文章,並沒有幫助...
編輯:似乎如果我手動將哈希粘貼到數據庫字段,身份驗證後生成它通過:
echo $phpass->HashPassword('password');
你是對的''beforeSave'是問題,我把它包裝在'$ this-> scenario =='register''中,現在它完美地工作了 – keeg
對這種情況使用場景的好主意 – 2013-02-05 20:56:59