CakePHP使用摘要身份验证:注销后无密码登录成功

CakePHP使用摘要身份验证:注销后无密码登录成功,php,cakephp,cakephp-2.0,digest-authentication,Php,Cakephp,Cakephp 2.0,Digest Authentication,我正在使用CakePHP创建一个简单的应用程序,我决定使用摘要身份验证,因为我无法获得SSL证书,也不希望密码通过表单以明文形式发布 所以,一切都很好地工作,登录,注销,一切工作都根据登录状态。然而,当我再次登录时,它会自动登录,而不需要密码或用户名。这使得我无法更改帐户,直到我注销一段时间(一天左右),并且它再次要求输入用户名和密码。如果我使用的是一台公共计算机,并且不希望下一个家伙在没有密码提示的情况下随意登录我的帐户,这也是一种安全风险 我的问题是,蛋糕中是否有我遗漏的设置,或者这是我的浏

我正在使用CakePHP创建一个简单的应用程序,我决定使用摘要身份验证,因为我无法获得SSL证书,也不希望密码通过表单以明文形式发布

所以,一切都很好地工作,登录,注销,一切工作都根据登录状态。然而,当我再次登录时,它会自动登录,而不需要密码或用户名。这使得我无法更改帐户,直到我注销一段时间(一天左右),并且它再次要求输入用户名和密码。如果我使用的是一台公共计算机,并且不希望下一个家伙在没有密码提示的情况下随意登录我的帐户,这也是一种安全风险

我的问题是,蛋糕中是否有我遗漏的设置,或者这是我的浏览器,它会记住我的凭证,并在应用程序要求时提供给我。我觉得注销应该清除凭据。我在Chrome和Firefox上都试过,结果都是一样的,我也没有选中任何“记住我的密码”框

我的身份验证组件初始化:

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());

}
注销功能:

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::password函数,我必须手动包含DigestAuthenticate.php,Cake抛出了一些错误,指出DigestAuthenticate类不存在。请参见此处的问题:

根据CakePHP书籍:

注销使用摘要或基本身份验证登录的用户是 很难为所有客户完成。大多数浏览器将保留 在其打开期间的凭据。有些客户可能是 通过发送401状态代码强制注销。改变 身份验证领域是另一个适用于某些客户端的解决方案


这可能不是你想听到的,但是…

好了,你已经知道了,真不敢相信我在读这本书寻找解决方案时错过了。谢谢