2010-04-13 71 views
1

我設法得到認證通過此網頁上的教程http://planetcakephp.org/aggregator/items/2604-create-simple-user-authentication-using-cakephp%E2%80%99s-auth-componentCakePHP的身份驗證組件的密碼不一致

如何確保當我在註冊頁面我的工作,密碼和確認密碼的用戶提供不匹配,密碼字段將被重新填入用戶輸入的值,而不是它的散列版本?

感謝,
三通

+1

爲什麼你想在第一個地方?密碼錯誤。密碼字段被屏蔽,你看不到裏面有什麼。重新填充它有什麼用處?無論如何,用戶必須從頭開始輸入。 – deceze 2010-04-13 12:53:06

+0

事實上,如果某些表單提交出錯,應該重置密碼字段。不是嗎? – 2010-07-22 08:09:46

回答

0

我不認爲這是必要摸不着頭腦,因爲密碼的功能input.Also這將是很難做到這一點,因爲你已經使用了Auth component.From在cookbook:如果用戶名字段也存在在提交的數據

中的驗證組件會自動散列密碼字段

這意味着你將但是,我認爲有一個棘手的方法來處理javascript:在註冊視圖文件中添加一個隱藏的類型輸入,它與$form->input('password');具有相同的值,但名稱不同,那麼您可以檢索它在動作中要顯示在密碼輸入文本中。

if ($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])) 
{ 
    $this->User->save($this->data); 
    $this->Session->setFlash("your data has been saved."); 
    $this->redirect("index"); 
} 
else 
{ 
    $this->data['User']['password'] = $this->data['User']['trickpassword']; 
    /*i prefer this 
    $this->data['User']['password'] = ''; 
    $this->data['User']['password_confirm'] = ''; 
    */ 
    $this->Session->setFlash('Password confirm fail!'); 
} 
+1

我更喜歡'$ this-> User-> invalidate('trickpassword','Password confirm fail!')',因爲它更適合於表單驗證語言,並允許您的表單驗證邏輯返回其他同時出錯。 – 2010-04-13 16:25:05

+0

@丹尼爾賴特,好記:) – Young 2010-04-14 08:09:53

1

而不是使用trickpassword,你已經有了密碼確認字段與unhash密碼。您可以使用類似於這些的規則來檢查密碼字段與空白密碼...然後對hash_confirm進行哈希以確保兩者相同。

http://bin.cakephp.org/saved/42156