2016-07-20 38 views
-1

Wie kann ich es schaffen, einen Hash-Code an eine E-Mail zum Zurücksetzen des Passworts zu senden, und wenn der Code von der Person angeklickt wird, lassen Sie den Benutzer sein Passwort zurücksetzen?Wie Hash-Code an die E-Mail zum Zurücksetzen des Passworts Yii2 Basic senden?

+0

generieren einen Hash-String mit 'Yii :: $ app-> getSecurity() -> generateRandomString (64); 'Speichern Sie es in einer Tabelle mit user_id und senden Sie dann eine E-Mail mit dem Hashcode als Abfragezeichenfolge param. Sie werden in der Lage sein, Benutzer zu identifizieren, die diesen Hash verwenden, und Benutzer das Passwort ändern lassen. Sobald das Passwort geändert wurde, entfernen Sie den Hashcode aus der Tabelle. –

+0

Der Ablauf ist in Advanced-Vorlage sehr gut dokumentiert. Bitte überprüfe und folge diesem Fluss, der in der erweiterten Vorlage implementiert ist ... –

Antwort

2

In ForgotForm.php

public function sendEmail() { 
    $token = substr(base64_encode(sha1(mt_rand())), 0, 64); 
    $model = LoginUser::find()->where(['email' => $this->email])->one(); 
    $model->setAttributes(['token' => $token]); 
    if ($model->save()) { 
     $mail = Yii::$app->mailer->compose('redirect', ['model' => $model]) 
       ->setFrom('[email protected]') 
       ->setTo($model->email); 
     var_dump($mail); 
    } 
} 

In redirect.php (in Mail-Ordner)

<div> <p> Please use this link to reset your password : <?= Url::to(["/site/reset", 'token' => $model->token], TRUE); ?> </p> 

0

Sie können einmalig oder Hash-Wert aus dieser Funktion

md5 (uniqid (rand(), true)) erzeugen;

Speichern dieser Wert in der Datenbank (Feld wie Schlüssel in Benutzertabelle). Generieren Sie eine URL mit dem eindeutigen Wert, den wir erstellt haben, und senden Sie sie an den Benutzer.

Wenn der Benutzer auf diesen Link klickt, wird der Parameter aus dem Link abgerufen und mit dem Wert überprüft, der in der Datenbank gespeichert ist.

+0

Ich benutze $ token = substr (base64_encode (sha1 (mt_rand())), 0, 64); für den Hash-Code, aber benötigen einige Code-Hilfe für das Senden von E-Mails und überprüfen Sie es in der Datenbank – RosS