Yii2 实现修改密码功能
2015-09-29 23:42
741 查看
YII2对密码加密生成的结果是不同的,即用相同的初始密码在不同时间得到的加密结果不同,所以我们不能用常用的方法去验证密码是否正确(将密码加密后与数据库中的密码相比较)。YII2有自己的加密以及密码验证流程。
加密 $hash = Yii::$app->getSecurity()->generatePasswordHash('123456']);
验证 Yii::$app->getSecurity()->validatePassword('123456', $hash),返回true或false
控制器中:
模型中:
加密 $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; } }
相关文章推荐
- PHP脚本的错误处理方式(PHP实战手册读书笔记)
- 关于EditPlus3 取消备份后再重新打开 备份设置还原到默认状态的问题
- ubuntu NTP服务器架设
- php preg_match()与preg_match_all()函数
- 自定义实现ContentProvider数据共享
- (php)mysql主键及高级操作 摘要
- ftp命令详解
- 95 php combol_url()
- PHPMailer
- PHP+Xdebug实现远程调试
- 【PHP】编译安装 PHP5.6.13遇到问题以及解决方案
- SCTP协议及偶联
- php
- php-fpm中启用慢日志配置
- PHP接口的实现(转)(笔记)
- 用PHP访问远程文件
- ubuntu 安装pure-ftp
- [PHP]Mcrypt响应慢的原因解决备注
- ubuntu php执行计划任务
- 解决php表单重复提交实现方法