2012-04-18 34 views
2

我正在使用CakePHP創建一個簡單的應用程序,並且我決定使用摘要身份驗證,因爲我無法獲取SSL證書並且不希望以純文本形式發佈密碼由一個表單。CakePHP使用摘要身份驗證:註銷後無需密碼登錄成功

所以這一切都很好,登錄,註銷,一切工作根據登錄狀態。但是,當我登錄後再次登錄時,它會自動登錄,而不會詢問密碼或用戶名。這使得無法更改帳戶,直到我退出一段時間(大約一天?),並且再次請求用戶名和密碼。如果我使用的是公用計算機,並且不希望下一個登錄到我的帳戶的用戶在沒有密碼提示的情況下全部登錄到我的帳戶,這也是一個安全風險。

我的問題,是否存在Cake中的一個設置,我錯過了或者這是我的瀏覽器記住我的憑據,並在應用程序請求時提供它們。我覺得登出應該清除憑證。我已經在Chrome和Firefox中嘗試過,結果相同,我也沒有檢查任何「記住我的密碼」框。

我的驗證組件intiation:

public $components = array('Session', 'RequestHandler', 'Auth' => array(
      'authenticate' => array('Digest'), 
      'loginRedirect' => array('controller' => 'posts', 'action' => 'index'), 
      'logoutRedirect' => array('controller' => 'posts', 'action' => 'index'), 
     )); 

登錄功能:

public function login() { 
//No longer Auth Magic 
if ($this->Auth->login()) { 
    return $this->redirect(array('controller' => 'posts', 'action' => 'index')); 
} else { 
    $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth'); 
} 
    $this->autoRender = false; 
} 

註銷功能:

public function logout() { 
    $this->Auth->logout(); 
    return $this->redirect($this->Auth->logout()); 

} 

所以任何想法?我應該提到的另一件事是我必須手動包含DigestAuthenticate.php才能使用DigestAuthenticate :: password函數,Cake會拋出一些錯誤,指出DigestAuthenticate類不存在。看到這裏的問題:http://ask.cakephp.org/questions/view/digestauthenticate

回答

1

根據CakePHP的書[here]

註銷與文摘或基本認證登錄的用戶是 難以實現對所有客戶端。大多數瀏覽器在他們仍然打開期間將保留 憑據。有些客戶端可能會通過發送401狀態碼強制註銷 。更改 身份驗證領域是另一種適用於某些客戶端的解決方案。

這可能不是你想聽到什麼,但是......

+0

那麼你有它,不能相信我錯過了通過讀書時尋找解決這個。謝謝! – Dsyko 2012-04-18 15:36:55

相關問題