Maison > développement back-end > tutoriel php > Yii2 Opération de mot de passe oublié basée sur la vérification de l'e-mail

Yii2 Opération de mot de passe oublié basée sur la vérification de l'e-mail

不言
Libérer: 2023-03-24 12:12:02
original
1941 Les gens l'ont consulté

Le contenu de cet article concerne l'opération de mot de passe oublié de Yii2 basée sur la vérification des e-mails. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

J'en ai parlé. envoi d'e-mails avant la fonction, nous allons maintenant utiliser la fonction d'envoi d'e-mails pour faire une petite démo

Déterminons d'abord quel processus nous devons effectuer pour réaliser le mot de passe oublié

1. 弹出窗口,提示用户输入用户名和邮箱。2. 验证邮箱,利用md5等等加密拼接token,发送token,当前时间戳,账户名等属性。3. 用户点击邮箱链接,到指定控制器,验证我们的token和时间是否超时。4. 如果都验证成功,则进入修改密码操作
Copier après la connexion
  1. Si vous cliquez sur Mot de passe oublié et nous entrerons la méthode correspondante du contrôleur actuel.
    Vérifiez l'e-mail et le nom d'utilisateur saisis par l'utilisateur. Si la vérification réussit, effectuez notre opération d'envoi d'e-mail

//模型文件代码
 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
Copier après la connexion
  1. Si nous cliquons sur l'adresse e-mail épissée, nous entrerons ensuite la méthode emailchangepass dans notre contrôleur de gestion et transmettrons nos attributs de jeton, d'heure et d'administrateur via la méthode GET
    dans le contrôleur

    dans la couche modèle, nous avons besoin La seule méthode à écrire est la méthode changepass(). Vérifiez que la méthode updateAll() est appelée avec succès

    • Nous devons vérifier l'actualité de notre temps. La connexion échoue après 5 minutes

    • .

      Nous devons Pour vérifier si le jeton est le jeton que nous avons initialement créé

    • nous devons identifier s'il existe actuellement une requête POST. S'il y en a, cela signifie que l'utilisateur. a saisi un mot de passe modifié et vous devez saisir le fichier modèle pour vérifier le mot de passe. Règles

       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]);
      }
      Copier après la connexion

Cela met fin à ce partage.

J'ai déjà parlé de la fonction d'envoi d'e-mails, nous allons maintenant utiliser la fonction d'envoi d'e-mails pour faire une petite démo

Déterminons d'abord quel processus nous devons effectuer pour oublier le mot de passe

1. 弹出窗口,提示用户输入用户名和邮箱。2. 验证邮箱,利用md5等等加密拼接token,发送token,当前时间戳,账户名等属性。3. 用户点击邮箱链接,到指定控制器,验证我们的token和时间是否超时。4. 如果都验证成功,则进入修改密码操作
Copier après la connexion
  1. Si vous cliquez sur Mot de passe oublié, nous entrerons la méthode correspondante du contrôleur actuel.
    Vérifiez l'e-mail et le nom d'utilisateur saisis par l'utilisateur. Si la vérification réussit, effectuez notre opération d'envoi d'e-mail

//模型文件代码
 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
Copier après la connexion
  1. Si nous cliquons sur l'adresse e-mail épissée, nous entrerons ensuite la méthode emailchangepass dans notre contrôleur de gestion et transmettrons nos attributs de jeton, d'heure et d'administrateur via la méthode GET
    dans le contrôleur

    dans la couche modèle, nous avons besoin La seule méthode à écrire est la méthode changepass(). Vérifiez que la méthode updateAll() est appelée avec succès

    • Nous devons vérifier l'actualité de notre temps. La connexion échoue après 5 minutes

    • .

      Nous devons Pour vérifier si le jeton est le jeton que nous avons initialement créé

    • nous devons identifier s'il existe actuellement une requête POST. S'il y en a, cela signifie que l'utilisateur. a saisi un mot de passe modifié et vous devez saisir le fichier modèle pour vérifier le mot de passe. Règles

       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]);
      }
      Copier après la connexion

      Cela met fin à ce partage.

      Recommandations associées :

      Vérification de l'autorisation de réinitialisation Yii2

      Yii2.0 PHP utilisant Sphinx

      Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal