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;
}
}
Yii2 实现修改密码功能的更多相关文章
- Sharepoint增加修改密码功能
Sharepoint中没有自带的修改密码的功能. 如果使用的是AD验证,修改密码,只要修改域帐号的用户名密码就可以了.以下代码可以修改本机密码和域帐号密码. 做法是,添加一个webpart,做一个页面 ...
- SSH 基于ajax实现修改密码功能步骤梳理
1. 为密码输入框进行输入校验,使用easyUI提供的easyui-validatebox <table cellpadding=3> <tr> <td>新密码:& ...
- Web实现数据库链接的登录注册修改密码功能
/** * Copyright (C), 2017-2017 * FileName: User * Author: ichimoku * Date: 2017/12/5 14:31 * version ...
- JavaWeb网上图书商城完整项目--day02-19.修改密码功能流程分析
我们来看看修改密码的业务流程操作:
- js用户修改密码功能模块
;(function(){ var ajaxSub = false, showError = function(msg){ if(msg){ $('#er_txt').html(msg).show() ...
- Liferay 6.2 改造系列之七:关闭使用条款确认、密码提醒、新用户强制修改密码等功能
关闭使用条款确认: 在/portal-master/portal-impl/src/portal.properties配置文件中,有如下配置: # # Set this to true if all ...
- 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能
上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...
- NTOPNG修改密码
感觉这个有点妖,因为在两个实例上修改密码都失败了. 于是,从网上看看是怎么回事, 按以下步骤重置你想要的密码: 1,为密码生成MD5字串: echo -n "your_password&qu ...
- python-登录-注册-修改密码
该脚本实现了,登录,注册,修改密码功能. #!/usr/bin/env python # -*- coding:utf-8 -*- #pangguoping import os def login(u ...
随机推荐
- [3D跑酷] MissionManager
前言 许久没有更新日志了,之前写了GUIManager,GUIClickEventReceiver还有AudioManager,这次写MissionManager 引用关系 首先看下MissionMa ...
- Expression<Func<T,TResult>>和Func<T,TResult>
1.Expression<Func<T,TResult>>是表达式 //使用LambdaExpression构建表达式树 Expression<Func<int, ...
- Mac 使用SSH远程登录
一.打开ssh Mac Terminal是自带SSH的,可以用whereis来看看: $ whereis ssh 但是在现有进程中找不到ssh对应的进程: $ ps aux | grep ssh ap ...
- 《JAVA与模式》之适配器模式(转)
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- C#属性有什么作用
1,主要作用:将读,写权限分开.如果不使用属性,仅使用public, protected, private,这几个限制都是读,写属性一起的,可读就可写,不可读同时也不可写.不能实现只读不可写,只写不可 ...
- [Android] 【视频】黑马安卓62、66期等教程+源码
下载地址:http://fu83.cn/thread-58-1-1.html
- netty定时器HashedWheelTimer(zz)
http://www.tianjiaguo.com/programming-language/java-language/netty%E5%AE%9A%E6%97%B6%E5%99%A8hashedw ...
- Javascript系列: Google Chrome调试js代码(zz)
你 是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~, ...
- linux内核分析 第八周
第八周 理解进程调度时机跟踪分析进程调度与进程切换的过程 一.进程调度与切换 1.进程的调度时机与进程切换 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程 ...
- EF实体框架之CodeFirst六
上午的时候把复杂类型学习了一下,想着趁着周六日把Code First学习完,所以下午还是把Code First中的关系学习下.在数据库中最重要的恐怕就是E-R图了,E-R体现了表与表直接的关系.使用C ...