Heim > Backend-Entwicklung > PHP-Tutorial > Yii2 Vorgang „Passwort vergessen' basierend auf E-Mail-Verifizierung

Yii2 Vorgang „Passwort vergessen' basierend auf E-Mail-Verifizierung

不言
Freigeben: 2023-03-24 12:12:02
Original
1941 Leute haben es durchsucht

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. 如果都验证成功,则进入修改密码操作
Nach dem Login kopieren
  1. 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'])."&timestamp=".$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
Nach dem Login kopieren
  1. 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]);
      }
      Nach dem Login kopieren

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. 如果都验证成功,则进入修改密码操作
Nach dem Login kopieren
  1. 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'])."&timestamp=".$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
Nach dem Login kopieren
  1. 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]);
      }
      Nach dem Login kopieren

      Damit ist diese Freigabe beendet.

      Verwandte Empfehlungen:

      Yii2 zurückgesetzte Autorisierungsüberprüfung

      Yii2.0 PHP mit Sphinx

      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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage