2011-08-21 127 views
0

如何讓用戶在訪問其帳戶時必須重新輸入密碼?因此,例如:domain.com/account,然後他們看到一個簡單的密碼字段(即使他們登錄),如果他們得到密碼錯誤的,那麼他們便會註銷,與會話消息,說「出於安全考慮,您已被送往主頁退出帳戶「。CakePHP:請求用戶在輸入帳戶時輸入密碼

任何人都可以幫忙嗎?

該帳戶是我的用戶控制器中的編輯方法。

感謝

+0

你正在使用什麼Cakephp版本? – Pehmolelu

+0

1.3.8。爲什麼這對此很重要?謝謝 – Cameron

+0

許多人已經轉向2.0,所以只是想澄清它。你有沒有嘗試過任何東西?就像製作帶有密碼字段的帖子表格,然後使用hashpassword函數對其進行散列並與登錄用戶散列密碼進行比較? – Pehmolelu

回答

0

我會做這樣的事〜

// edit.ctp View 
echo $this->Form->input('password_check', array('type'=>'password')); 

// user.php Model 
function check_user_password($get_the_current_users_id) { 
    $salt = Configure::read('Security.salt'); 
    $this->User->id = $get_the_current_users_id; 
    $hashed_password = $this->User->field('password'); 
    // check password 
    if($hashed_password == md5($data['User']['password_check'].$salt)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

你需要調整密碼哈希位;如果你不使用鹽等

但這個想法是比較數據庫中的用戶散列密碼,他們提交的密碼。如果它匹配;那麼你可以繼續。否則,您可以註銷/返回錯誤。 (爲了可用性,我會而不是註銷用戶,因爲這隻會令人討厭。)

+0

我在控制器中顯示密碼字段或編輯配置文件視圖的內容? – Cameron

+0

基本if/else語句;也許使用'$ this-> render'來避免改變動作。如果他們通過身份驗證,則設置會話爲什麼要去解決所有這些問題?它打破慣例有一個用戶重新輸入密碼,只需在登錄後訪問他的帳戶,我能理解,要求密碼確認後作出敏感的變化。但你只是爲你的用戶做額外的工作。 – Ross

+0

這是一個客戶端請求。他們在MobileMe網站上看到了類似的內容,並希望在我爲他們開發的應用中實現它。我仍然不完全理解如何使用您發佈的代碼。您是否能夠顯示控制器代碼以及如何使用發佈的功能?非常感激。謝謝 – Cameron