Der Inhalt dieses Artikels befasst sich mit dem Passwort-Vergessen-Vorgang von Yii2, der auf der E-Mail-Verifizierung basiert. Jetzt kann ich ihn mit Ihnen teilen.
Ich habe darüber gesprochen Senden von E-Mails vor der Funktion, jetzt verwenden wir die E-Mail-Versandfunktion, um eine kleine Demo zu erstellen
Lassen Sie uns zunächst herausfinden, welchen Prozess wir durchführen müssen, um das vergessene Passwort zu erkennen
1. 弹出窗口,提示用户输入用户名和邮箱。2. 验证邮箱,利用md5等等加密拼接token,发送token,当前时间戳,账户名等属性。3. 用户点击邮箱链接,到指定控制器,验证我们的token和时间是否超时。4. 如果都验证成功,则进入修改密码操作
Wenn Sie auf „Passwort vergessen“ klicken, geben wir die entsprechende Methode des aktuellen Controllers ein.
Überprüfen Sie die vom Benutzer eingegebene E-Mail-Adresse und den Benutzernamen. Wenn die Überprüfung erfolgreich ist, führen Sie unseren E-Mail-Versandvorgang aus
//模型文件代码 public function seekPass($post) { $this->scenario = "seekPass"; if($this->load($post)&&$this->validate()) { $time = time(); $adminuser = $post['Admin']['adminuser']; $token = $this->createToken($post['Admin']['adminuser'],$time); //自定义方法,创建一个唯一token $mailer = \Yii::$app->mailer->compose('seekpass',['text'=>'text','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."×tamp=".$time."&token=".$token."&adminuser=".$adminuser]); $mailer ->setFrom("1115007981@qq.com") ->setTo("1115007981@qq.com") ->setSubject("黑势力科技") ->send(); if($mailer) return true; } return false; } //拼接的邮箱地址为: http://web.demo.com/shop/access/backend/web/index.php?r=manage/Femailchangepass×tamp=1524052534&token=4575d5050f57baf4a896c3924d972c12&adminuser=admin
Wenn wir auf klicken die gespleißte E-Mail-Adresse, dann geben wir die emailchangepass-Methode in unseren Verwaltungscontroller ein und übertragen unsere Token-, Zeit- und Adminuser-Attribute über die GET-Methode
im Controller
in der Modellebene. Wir brauchen Die einzige Methode zum Schreiben ist die Methode changepass(). Überprüfen Sie, ob die updateAll()-Methode erfolgreich aufgerufen wurde
Wir müssen die Aktualität unserer Zeit überprüfen. Die Verbindung schlägt nach 5 Minuten fehl
Um zu überprüfen, ob es sich bei dem Token um das Token handelt, das wir ursprünglich erstellt haben
müssen wir feststellen, ob derzeit eine POST-Anfrage vorliegt hat ein geändertes Passwort eingegeben und Sie müssen die Modelldatei eingeben, um die Passwortregeln zu überprüfen
public function actionEmailchangepass(){ $this->layout='login'; $time = Yii::$app->request->get('timestamp'); $adminuser = Yii::$app->request->get('adminuser'); $token = Yii::$app->request->get('token'); $model = new Admin(); $mytoken = $model->createToken($adminuser,$time); if($token!=$mytoken) { $this->redirect(['public/login']); Yii::$app->end(); } if(time()-$time>300) { $this->redirect(['public/login']); Yii::$app->end(); } if(Yii::$app->request->isPost) { $post = Yii::$app->request->post(); if ($model->changepass($post)) { Yii::$app->session->setFlash('info','密码修改成功'); } } $model->adminuser = $adminuser; return $this->render('emailchangepass',['model'=>$model]); }
Damit ist diese Freigabe beendet.
Ich habe bereits über die E-Mail-Versandfunktion gesprochen, jetzt werden wir die E-Mail-Versandfunktion verwenden, um eine kleine Demo zu erstellen
Lassen Sie uns zunächst klären, welchen Prozess wir durchführen müssen, um das Passwort zu vergessen
1. 弹出窗口,提示用户输入用户名和邮箱。2. 验证邮箱,利用md5等等加密拼接token,发送token,当前时间戳,账户名等属性。3. 用户点击邮箱链接,到指定控制器,验证我们的token和时间是否超时。4. 如果都验证成功,则进入修改密码操作
Wenn Sie auf „Passwort vergessen“ klicken, geben wir die entsprechende Methode des aktuellen Controllers ein.
Überprüfen Sie die vom Benutzer eingegebene E-Mail-Adresse und den Benutzernamen. Wenn die Überprüfung erfolgreich ist, führen Sie unseren E-Mail-Versandvorgang aus
//模型文件代码 public function seekPass($post) { $this->scenario = "seekPass"; if($this->load($post)&&$this->validate()) { $time = time(); $adminuser = $post['Admin']['adminuser']; $token = $this->createToken($post['Admin']['adminuser'],$time); //自定义方法,创建一个唯一token $mailer = \Yii::$app->mailer->compose('seekpass',['text'=>'text','adminuser'=>$post['Admin']['adminuser'],'token'=>$_SERVER['HTTP_HOST'].Url::toRoute(['manage/emailchangepass'])."×tamp=".$time."&token=".$token."&adminuser=".$adminuser]); $mailer ->setFrom("1115007981@qq.com") ->setTo("1115007981@qq.com") ->setSubject("黑势力科技") ->send(); if($mailer) return true; } return false; } //拼接的邮箱地址为: http://web.demo.com/shop/access/backend/web/index.php?r=manage/Femailchangepass×tamp=1524052534&token=4575d5050f57baf4a896c3924d972c12&adminuser=admin
Wenn wir auf klicken die gespleißte E-Mail-Adresse, dann geben wir die emailchangepass-Methode in unseren Verwaltungscontroller ein und übertragen unsere Token-, Zeit- und Adminuser-Attribute über die GET-Methode
im Controller
in der Modellebene. Wir brauchen Die einzige Methode zum Schreiben ist die Methode changepass(). Überprüfen Sie, ob die updateAll()-Methode erfolgreich aufgerufen wurde
Wir müssen die Aktualität unserer Zeit überprüfen. Die Verbindung schlägt nach 5 Minuten fehl
Um zu überprüfen, ob es sich bei dem Token um das Token handelt, das wir ursprünglich erstellt haben
müssen wir feststellen, ob derzeit eine POST-Anfrage vorliegt hat ein geändertes Passwort eingegeben und Sie müssen die Modelldatei eingeben, um die Passwortregeln zu überprüfen
public function actionEmailchangepass(){ $this->layout='login'; $time = Yii::$app->request->get('timestamp'); $adminuser = Yii::$app->request->get('adminuser'); $token = Yii::$app->request->get('token'); $model = new Admin(); $mytoken = $model->createToken($adminuser,$time); if($token!=$mytoken) { $this->redirect(['public/login']); Yii::$app->end(); } if(time()-$time>300) { $this->redirect(['public/login']); Yii::$app->end(); } if(Yii::$app->request->isPost) { $post = Yii::$app->request->post(); if ($model->changepass($post)) { Yii::$app->session->setFlash('info','密码修改成功'); } } $model->adminuser = $adminuser; return $this->render('emailchangepass',['model'=>$model]); }
Damit ist diese Freigabe beendet.
Verwandte Empfehlungen:
Yii2 zurückgesetzte Autorisierungsüberprüfung
Das obige ist der detaillierte Inhalt vonYii2 Vorgang „Passwort vergessen' basierend auf E-Mail-Verifizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!