Am Passwort ändert in yii2 erweitert App versucht, Kontrolle aber es funktioniert nicht immerÄndern yii2 Passwort durch das aktuelle Passwort mit dem eingegebenen Passwort
Ich habe ein Modell, das das eingegebene Passwort und prüft sie gegen das gespeicherte Passwort findet und wenn es ist wahr, es ist wahr, aber wenn es falsch ist, sollte es scheitern.
Dies ist Modellteil
Dies ist, was ein Benutzer-Passwort setzt
public function setPassword($password)
{
$this->password = Yii::$app->security->generatePasswordHash($password);
}
Dies ist, was die beiden Passwörter zu vergleichen verwendet wird
public function findPasswords($attribute, $params){
$user = UserIdentity::find()->where([
'username'=>Yii::$app->user->identity->username
])->one();
$password = $user->password_hash; //returns current password as stored in the dbase
$hash2 = Yii::$app->security->generatePasswordHash($this->oldpass); //generates an encrypted password
if($password!= $hash2)
{
$this->addError($attribute, 'Old password is incorrect');
}
}
Dieses immer alte Passwort falsch zurückgibt, ist . habe ich versucht, auch
var_dump(Yii::$app->security->generatePasswordHash(5378));
var_dump(Yii::$app->security->generatePasswordHash(5378));
Die beiden oben gibt zwei verschiedene Werte, warum es das?
Was könnte falsch sein ??
Dies ist das voll USER Modell nach Update Am nun einen Fehler des Erhaltens unbekannte Eigenschaft bekommen: app \ model \ Userpass :: password_hash
class UserPass extends Model{
public $oldpass;
public $newpass;
public $repeatnewpass;
public function rules(){
return [
[['oldpass','newpass','repeatnewpass'],'required'],
['oldpass','findPasswords'],
['repeatnewpass','compare','compareAttribute'=>'newpass'],
];
}
public function findPasswords($attribute, $params){
$user = UserIdentity::find()->where([
'username'=>Yii::$app->user->identity->username
])->one();
$valid = $this->validatePassword("53785378");
var_dump(validatePassword("53785378"));
die();
$password = $user->password_hash; //returns current password as stored in the dbase
$hash2 = Yii::$app->security->generatePasswordHash($this->oldpass); //generates an encrypted password
if($password!= $hash2)
{
$this->addError($attribute, 'Old password is incorrect');
}
}
public function attributeLabels(){
return [
'oldpass'=>'Old Password',
'newpass'=>'New Password',
'repeatnewpass'=>'Confirm Password',
];
}
public function validatePassword($password) {
return Yii::$app->security->validatePassword($password, $this->password_hash);
}
}
Ich habe es hinzugefügt, aber ich weiß, erhalten einen Fehler von Hash ist ungültig –
Ich habe die Frage mit meinem neuen Fehler –
aktualisiert Das Modell sollte die Benutzeridentität darstellen. Folgen Sie dem [guide] (http://www.yiiframework.com/doc-2.0/guide-index.html) von yii2, um zu erfahren, wie es genau funktioniert – simialbi