我的UserController.php具有看起来像这样的注销功能
function logout()
{
$this->Session->destroy('User');
$this->Session->setFlash('You\'ve successfully logged out.');
var_export($this->Session->read('User'));
//$this->redirect('login');
}
我的观点用户/ index.ctp
<?php echo $this->Html->link('Logout', array('controller' => 'users', 'action' => 'logout')); ?>
当我点击“注销”时,var_export仍会显示所有用户数据,如果我返回到Users / index.ctp,它仍会显示该页面,即使在我的UserController.php中我正在检查是否设置了用户
function beforeFilter()
{
$this->__validateLoginStatus();
}
function __validateLoginStatus()
{
if($this->action != 'login' && $this->action != 'logout')
{
if($this->Session->check('User') == false)
{
$this->redirect('login');
}
}
它不会重定向到登录页面,只会将我带到索引页面。 }
答案 0 :(得分:3)
$this->Session->destroy();
destroy方法将删除存储在临时文件系统中的会话cookie和所有会话数据。
要删除的用户,请使用更好的删除。
$this->Session->delete('User');
答案 1 :(得分:0)
如果使用AuthComponent对用户进行身份验证,则可以使用logout()方法将其注销。
$this->Auth->logout();
请参阅http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#logging-users-out获取Cake 2或http://book.cakephp.org/1.3/en/view/1262/logout获取Cake 1.3
如果您根本不使用AuthComponent,那么您应该看看它,因为它包含了您已经或将要自己实现的许多功能。