setPasswordAttribute 方法的问题
按照书中例子,在setPasswordAttribute()加入以下代码:
if (strlen($value) != 60) {
$value = bcrypt($value);
}
$this->attributes['password'] = $value;
之后发现,修改password没有问题了。但是你如果尝试修改其他内容,比如用户名、邮箱、头像,选任何一个都可以。修改,保存。然后刷新数据库,发现数据库里该用户的密码一栏值变化了。尽管你没有修改密码,但是再用原来的密码已经无法登录了。
关于 LearnKu
我测试了,先修改password,保存,再修改用户名,保存,用第一步修改的password仍可以登录,并不会有问题。而且数据库加密的密码变化是因为加密算法的salt导致的。可以参考
先感谢你的回复。
用你说的步骤操作,没问题。
试试如下步骤,就出事了:
进入管理后台,选择一个账号,上去直接修改用户名(只改用户名,别动任何其他项)。退出,用该账号登录。结果无法登录了。
修改器里加个条件判断就行了
@hustnzj 你操作姿势不对,因为你么刷新页面。刷新页面执行这两步操作就会发现密码改变了
@小李飞叨 楼上是正解,如果传入的是空值,则return修改器,也就是说相当于这个属性修改无效
感谢分享!是要加个防空判断