我正在使用CakePHP创建一个简单的应用程序,我决定使用Digest Authenticate,因为我无法获得SSL证书,也不希望通过表单以纯文本形式发布密码。
所以一切正常,登录,注销,一切都按照登录状态运行。但是,当我再次登录时退出后,它会自动登录而不需要输入密码或用户名。这使我无法更改帐户,直到我退出一段时间(一天左右?),并再次要求输入用户名和密码。如果我使用公共计算机并且不希望下一个人在没有密码提示的情况下全部登录我的帐户,那么这也存在安全风险。
我的问题是,Cake中是否存在我缺少的设置,或者这是我的浏览器记住我的凭据并在应用程序要求时提供它们。我觉得退出应该清除凭据。我在Chrome和Firefox上都尝试了相同的结果,我也没有检查任何“记住我的密码”框。
我的Auth组件启示:
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
答案 0 :(得分:1)
根据CakePHP书[here]:
注销使用摘要或基本身份验证登录的用户是 很难为所有客户完成。大多数浏览器都会保留 他们仍然打开的持续时间的凭据。有些客户可以 通过发送401状态代码强制注销。改变了 身份验证领域是另一种适用于某些客户的解决方案。
这可能不是你想听到的,但是......