亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Yii2用戶密碼加密后驗證問題

Yii2用戶密碼加密后驗證問題

Yii
蝴蝶刀刀 2018-08-08 00:15:16
使用Yii2框架,密碼字段為pass,rules中設定的pass長度范圍為6-20;原密碼為123456789,校驗通過沒有問題,hash后存入數據庫,hash后的值肯定超過范圍了。此時pass字段值為hash后的值,沒有保存原密碼,不可逆加密。當我更新用戶數據的時候$userInfo = User::findOne(['id'=>1]); $userInfo->last_time = time();//這個時候就會報錯,因為密碼長度不符合要求$userInfo->save(true);該如何解決這個問題?現在暫時做的就是修改rules范圍,但是這樣用戶原密碼長度的限制條件也跟著修改了。有沒有更好的解決方案?
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

如果你是用的YII2 advanced的話,你可以看下它默認的用戶模型和默認的migration。

用戶模型里的password字段已經是被定義過了,你無需再次定義。

你把你的password字段改為password_hash,保存的時候禁止前端展示和發送password_hash(這個可以在rule控制)并把password這個字段帶過來,如果password不為空,則在更新用戶信息前執行$user->setPassword(Yii::$app->request->post('password'))即可(或者寫在用戶模型的beforeSave方法里也行)


查看完整回答
反對 回復 2018-08-12
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

可以把從 model::scenarios() 里定義的 self::SCENARIO_DEFAULT 的值中去掉 password, 
從而在default-scenario下不再驗證password

查看完整回答
反對 回復 2018-08-12
  • 2 回答
  • 0 關注
  • 1239 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號