溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Yii2.0中(Hash is invalid error)驗證錯誤

發(fā)布時間:2020-07-21 18:49:25 來源:網(wǎng)絡(luò) 閱讀:9838 作者:daydaydream 欄目:web開發(fā)

老項目數(shù)據(jù)遷移到Y(jié)ii2.0后,密碼仍使用md5加密。但是通過yii2.0的驗證類的validatePassword($password)函數(shù)驗證始終返回false:

public function validatePassword($password){
if(is_null($this->password))
return false;
return Yii::$app->getSecurity()->validatePassword($this->salt . $password, $this->password);
}

因為Yii原生默認(rèn)方式并非md5直接加密,加密驗證一般如下操作:
1.Yii2.0加密及校驗:

加密:

$hash_password = Yii::$app->security->generatePasswordHash('123456');

一般由password_hash()處理加密,可在該函數(shù)設(shè)置參數(shù)

校驗:

$bool = Yii::$app->security->validatePassword($password, $hash_password);

$password為輸入的密碼,它是沒有經(jīng)過加密的字符串

$hash_password為原先加密的密碼

一般用法:
step1:將密碼'123456'加密為$hash_password;

step2:將$hash_password存入數(shù)據(jù)庫;

step3:從數(shù)據(jù)庫中查詢出密碼,賦給變量$hash_password;

step4:獲取用戶輸入的密碼,賦給變量$password;

step5:校驗密碼,返回bool值.


所以修改驗證類中的validatePassword函數(shù)如下解決:

public function validatePassword($password)
{
if(is_null($this->passwd)) return false;
// return \Yii::$app->security->validatePassword($password, $this->password_hash);
// return \Yii::$app->security->validatePassword($password, $this->passwd);
if(md5($password)==$this->passwd) return true;
}

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI