我工作的一個項目,重建使用CakePHP,這裏按照新的認證文件等型號: http://book.cakephp.org/3.0/en/controllers/components/authentication.htmlCakePHP的3驗證比對用戶
從什麼我讀,Cake3使用的usermodel ='用戶'默認情況下,但它可以將它設置爲任何你想要的。在我的情況下,我在'帳戶'模型中擁有所有驗證數據(即userModel =>'帳戶')。
所以,在我的帳戶實體,添加以下代碼:
protected function _setPassword($password)
{
return (new DefaultPasswordHasher)->hash($password);
}
此外,在我的賬表,我的「passwd文件」字段設置爲varchar(255)[我讀過的需要的因爲某些原因]。
當我使用默認的烘焙「添加」和「編輯」方法時,密碼以純文本形式存儲,而不是散列。我發現解決這個問題的唯一途徑是建立在AccountsTable類的自定義方法,然後用這個雜牌稱之爲:
$this->request->data['passwd'] = $this->Accounts->hashPassword($this->request->data['passwd']);
我的驗證組件看起來像這樣...
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Accounts',
'action' => 'login'
],
'authError' => 'Unauthorized Access',
'authenticate' => [
'Form' => [
'fields' => [
'username' => 'username',
'password' => 'passwd'
],
'userModel'=>'Accounts'
]
]
]);
有沒有辦法做到這一點,而不是與原始請求數據混在一起?
見跟進AccountsTable-> hashPassword是完全一樣的賬戶 - > _ setPassword()函數。 – user4838338
謝謝@ user4838338。從你的問題得到了我的答案 – Pradeepta