Yii2.0中(Hash is invalid error)驗證錯誤
public function validatePassword($password){
if(is_null($this->password))
return false;
return Yii::$app->getSecurity()->validatePassword($this->salt . $password, $this->password);
}
因為Yii原生默認方式並非md5直接加密,加密驗證一般如下操作:
加密:
$hash_password = Yii::$app->security->generatePasswordHash(‘123456‘);
一般由password_hash()處理加密,可在該函數設置參數
校驗:
$bool = Yii::$app->security->validatePassword($password, $hash_password);
$password為輸入的密碼,它是沒有經過加密的字符串
$hash_password為原先加密的密碼
一般用法:
step1:將密碼‘123456‘加密為$hash_password;
step2:將$hash_password存入數據庫;
step3:從數據庫中查詢出密碼,賦給變量$hash_password;
step4:獲取用戶輸入的密碼,賦給變量$password;
step5:校驗密碼,返回bool值.
所以修改驗證類中的validatePassword函數如下解決:
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;
}
Yii2.0中(Hash is invalid error)驗證錯誤