博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Yii2.0中(Hash is invalid error)验证错误
阅读量:6430 次
发布时间:2019-06-23

本文共 1081 字,大约阅读时间需要 3 分钟。

老项目数据迁移到Yii2.0后,密码仍使用md5加密。但是通过yii2.0的验证类的validatePassword($password)函数验证始终返回false:

public function validatePassword($password){

if(is_null($this->password))
return false;
return Yii::$app->getSecurity()->validatePassword($this->salt . $password, $this->password);
}

因为Yii原生默认方式并非md5直接加密,加密验证一般如下操作:

1.Yii2.0加密及校验:

加密:

$hash_password = Yii::$app->security->generatePasswordHash('123456');

一般由password_hash()处理加密,可在该函数设置参数

校验:

$bool = Yii::$app->security->validatePassword($password, $hash_password);

$password为输入的密码,它是没有经过加密的字符串

$hash_password为原先加密的密码

一般用法:

step1:将密码'123456'加密为$hash_password;

step2:将$hash_password存入数据库;

step3:从数据库中查询出密码,赋给变量$hash_password;

step4:获取用户输入的密码,赋给变量$password;

step5:校验密码,返回bool值.


所以修改验证类中的validatePassword函数如下解决:

public function validatePassword($password)

{
if(is_null($this->passwd)) return false;
// return \Yii::$app->security->validatePassword($password, $this->password_hash);
// return \Yii::$app->security->validatePassword($password, $this->passwd);
if(md5($password)==$this->passwd) return true;
}

转载于:https://blog.51cto.com/13238147/2150775

你可能感兴趣的文章
JAVA入门到精通-第3讲-运算符流程控制
查看>>
CustomEvent自定义事件
查看>>
iptables详解(5):iptables匹配条件总结之二(常用扩展模块)
查看>>
sqlserver2008 job设定
查看>>
HDFS 常用命令
查看>>
交通巡警调度
查看>>
无聊写写
查看>>
【转载】Nginx 配置 SSL 证书步骤小记
查看>>
从xubuntu-->windows xp
查看>>
python--正则表达式中(.)(*)(.*?)以及re.S的认识
查看>>
LightOJ - 1336 Sigma function (找规律)
查看>>
atitit.微信支付的教程文档 attilax总结
查看>>
PO订单审批拒绝API
查看>>
C++基础学习教程(一)
查看>>
【读书笔记】:MIT线性代数(4):Independence, Basis and Dimension
查看>>
Java内部锁的可重用性(Reentrancy)
查看>>
machine learning相关会议
查看>>
Eclipse的安装
查看>>
散列表
查看>>
武汉科技大学ACM :1001: 华科版C语言程序设计教程(第二版)课后习题3.12
查看>>