2012-04-18 30 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

相关问题