>백엔드 개발 >PHP 튜토리얼 >Yii2 이메일 확인을 통한 비밀번호 분실 작업

Yii2 이메일 확인을 통한 비밀번호 분실 작업

不言
不言원래의
2018-04-19 14:42:321948검색

이 글에서는 Yii2의 이메일 확인을 기반으로 한 잊어버린 비밀번호 작업을 소개합니다. 이제는 도움이 필요한 친구들이 참고할 수 있도록 공유하겠습니다.

이메일 보내기 기능에 대해 이야기해 보겠습니다. 사용해 보세요 이메일 전송 기능을 사용하여 작은 데모를 만들어 보겠습니다

먼저 잊어버린 비밀번호를 인식하기 위해 어떤 프로세스를 수행해야 하는지 정리하겠습니다

1. 弹出窗口,提示用户输入用户名和邮箱。2. 验证邮箱,利用md5等等加密拼接token,发送token,当前时间戳,账户名等属性。3. 用户点击邮箱链接,到指定控制器,验证我们的token和时间是否超时。4. 如果都验证成功,则进入修改密码操作
  1. 비밀번호 찾기를 클릭하면 현재 컨트롤러의 해당 방법으로 들어갑니다 .
    사용자가 입력한 이메일과 사용자 이름을 확인합니다. 확인에 성공하면 이메일 보내기 작업을 실행합니다.

//模型文件代码
 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
  1. 연결된 이메일 주소를 클릭하면 관리에 emailchangepass 메소드가 입력됩니다. 컨트롤러, 그리고 토큰, 시간 및 관리자의 속성은 GET 메소드를 통해 전송됩니다
    컨트롤러에서

    모델 계층에서 작성해야 하는 유일한 메소드는changepass() 메소드입니다. updateAll() 메소드가 성공적으로 호출되었는지 확인하세요

  • 시간의 적시성을 확인해야 합니다. 5분 후에 연결이 실패합니다.

  • 토큰이 처음에 생성한 토큰인지 확인해야 합니다

  • 현재를 식별해야 합니다. POST 요청이 있는 경우 사용자가 수정된 비밀번호를 입력했다는 의미이며, 비밀번호 규칙을 확인하려면 모델 파일을 입력해야 합니다.

     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]);
    }

이로 공유가 종료됩니다. .

이전에 이메일 보내기 기능에 대해 이야기했는데, 이제 이메일 보내기 기능을 사용해 간단한 데모를 만들어 보겠습니다

우선 비밀번호를 잊어버리기 위해 어떤 과정을 거쳐야 하는지 정리해보자

1. 弹出窗口,提示用户输入用户名和邮箱。2. 验证邮箱,利用md5等等加密拼接token,发送token,当前时间戳,账户名等属性。3. 用户点击邮箱链接,到指定控制器,验证我们的token和时间是否超时。4. 如果都验证成功,则进入修改密码操作
  1. 비밀번호 찾기를 클릭하면 , 현재 컨트롤러의 해당 방법을 입력합니다.
    사용자가 입력한 이메일과 사용자 이름을 확인합니다. 확인에 성공하면 이메일 보내기 작업을 실행합니다.

//模型文件代码
 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
  1. 연결된 이메일 주소를 클릭하면 관리에 emailchangepass 메소드가 입력됩니다. 컨트롤러, 그리고 토큰, 시간 및 관리자의 속성은 GET 메소드를 통해 전송됩니다
    컨트롤러에서

    모델 계층에서 작성해야 하는 유일한 메소드는changepass() 메소드입니다. updateAll() 메소드가 성공적으로 호출되었는지 확인하세요

  • 시간의 적시성을 확인해야 합니다. 5분 후에 연결이 실패합니다.

  • 토큰이 처음에 생성한 토큰인지 확인해야 합니다

  • 현재를 식별해야 합니다. POST 요청이 있는 경우 사용자가 수정된 비밀번호를 입력했다는 의미이며, 비밀번호 규칙을 확인하려면 모델 파일을 입력해야 합니다.

     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]);
    }

이로 공유가 종료됩니다. .

관련 권장 사항:

yii2 재설정된 인증 확인

Yii2.0 Sphinx를 사용하는 PHP

위 내용은 Yii2 이메일 확인을 통한 비밀번호 분실 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.