zoukankan      html  css  js  c++  java
  • Yii2 实现修改密码功能

      YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数据库中的密码相比较)。YII2有自己的加密以及密码验证流程。

      加密 $hash = Yii::$app->getSecurity()->generatePasswordHash('123456']);

      验证 Yii::$app->getSecurity()->validatePassword('123456', $hash),返回true或false

    控制器中:

    public function actionPassword(){
            $model=new PasswordForm;
            $request = YII::$app->request;
            if($request->isPost && $model->load(Yii::$app->request->post()) && $model->changePassword()){
                Yii::$app->user->logout();
                return $this->goHome();
            }else{
                return $this->render('password',['model'=>$model]);
            }
        }

    模型中:

    public function changePassword(){
            $id = YII::$app->user->id;
            $admin=  Admin::findIdentity($id);
            $password = $admin->password;
            if(Yii::$app->getSecurity()->validatePassword($this->password, $password)){
                if($this->pass1 == $this->pass2){
                    $newPass = Yii::$app->getSecurity()->generatePasswordHash($this->pass1);
                    $admin->password = $newPass;
                    if($admin->save()){
                        return true;
                    }else{
                        return false;
                    }
                }else{
                    Yii::$app->session->setFlash('contact','两次新密码不相等');
                    return false;
                }
            }else{
                Yii::$app->session->setFlash('contact','旧密码错误');
                return false;
            }
        }
  • 相关阅读:
    java+web+多级文件上传
    Java+web+上传文件夹
    java文件实现文件的上传和下载
    web文件夹上传
    js实现上传文件夹
    云中应用性能管理(APM)的下一步
    Cocoa 静态显示一个对话框
    Gradle 1.12用户指南翻译——第三十三章. PMD 插件
    LeetCode_Minimum Depth of Binary Tree
    Android控件ListView获取item中EditText值
  • 原文地址:https://www.cnblogs.com/baby123/p/4847617.html
Copyright © 2011-2022 走看看