$ this-Session-> destroy()是不是要破坏会话? v.cake饼2.0

时间:2012-02-14 07:54:15

标签: cakephp

我的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');
            }
        }

它不会重定向到登录页面,只会将我带到索引页面。         }

2 个答案:

答案 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,那么您应该看看它,因为它包含了您已经或将要自己实现的许多功能。