首页 / PHP / Yii2用户密码加密后验证问题
Yii2用户密码加密后验证问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Yii2用户密码加密后验证问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1501字,纯文字阅读大概需要3分钟。
内容图文
使用Yii2框架,密码字段为pass,rules中设定的pass长度范围为6-20;原密码为123456789,校验通过没有问题,hash后存入数据库,hash后的值肯定超过范围了。
此时pass字段值为hash后的值,没有保存原密码,不可逆加密。
当我更新用户数据的时候
$userInfo = User::findOne(['id'=>1]);
$userInfo->last_time = time();
//这个时候就会报错,因为密码长度不符合要求
$userInfo->save(true);
该如何解决这个问题?
现在暂时做的就是修改rules范围,但是这样用户原密码长度的限制条件也跟着修改了。有没有更好的解决方案?
回复内容:
使用Yii2框架,密码字段为pass,rules中设定的pass长度范围为6-20;
原密码为123456789,校验通过没有问题,hash后存入数据库,hash后的值肯定超过范围了。
此时pass字段值为hash后的值,没有保存原密码,不可逆加密。
当我更新用户数据的时候
$userInfo = User::findOne(['id'=>1]);
$userInfo->last_time = time();
//这个时候就会报错,因为密码长度不符合要求
$userInfo->save(true);
该如何解决这个问题?
现在暂时做的就是修改rules范围,但是这样用户原密码长度的限制条件也跟着修改了。有没有更好的解决方案?
可以把从 model::scenarios()
里定义的 self::SCENARIO_DEFAULT 的值中去掉 password,
从而在default-scenario下不再验证password
如果你是用的YII2 advanced
的话,你可以看下它默认的用户模型和默认的migration
。
用户模型里的password
字段已经是被定义过了,你无需再次定义。
你把你的password
字段改为password_hash
,保存的时候禁止前端展示和发送password_hash
(这个可以在rule控制)并把password
这个字段带过来,如果password
不为空,则在更新用户信息前执行$user->setPassword(Yii::$app->request->post('password'))
即可(或者写在用户模型的beforeSave
方法里也行)
内容总结
以上是互联网集市为您收集整理的Yii2用户密码加密后验证问题全部内容,希望文章能够帮你解决Yii2用户密码加密后验证问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。