2011-02-11 60 views
2

我正在登錄模塊上工作。在註銷功能中,我使用下面的代碼,先殺掉會話,然後重定向到主頁。它工作正常,但會話沒有破壞。 如果有人知道請幫我 這裏是我的登錄&註銷的代碼片段:如何殺死cakephp中的會話

function login() 
{ 

    if(!empty($this->data)) 
    { 

     $user1= $this->User->validateLogin($this->data['User']); 

     if($user1== true) 
     { 

       $this->redirect(array('action'=>'index')); 
     } 
     else 
     { 
       $this->Session->setflash('Login failed, Try again'); 
     } 
    } 
} 

function logout() 
{ 

    $this->Session->delete('User'); 
    $this->redirect('/users/index'); 
} 

我得到了,我要保持頭的信息,下面是我的代碼片段: $這個 - >頭( 「Cache-Control:no-cache,no-store,must-revalidate」); $ this-> header(「Expires:Mon,1970年1月1日00:00:00 GMT」);

但是m沒有進入我的控制器的哪個部分我應該粘貼這段代碼?請幫助我....

+0

$this->Session->delete('Auth'); 

否則你破壞cookies和其它用戶定義的設置,這將是非常惱人的(語言,...)

但官方蛋糕的方法是auth(cakephp sessin變量你不需要刪除會話mannually ....我想你錯過了這部分 – jack 2012-07-23 09:49:51

回答

8

嘗試$ this-> Session-> destroy(); destroy方法將刪除會話cookie和臨時文件系統中存儲的所有會話數據。檢查這link

+0

謝謝薩米爾....即使我檢查與摧毀也,但我的問題是,如果我點擊'返回'按鈕它會顯示所有的登錄歷史記錄... – pushpa 2011-02-11 12:46:38

2

因爲它不被允許,而不是因爲你的註銷功能中的重定向,你會得到重定向。你需要允許使用的註銷功能也一樣,在你的控制器的beforefilter(CakePHP的2):

$this->allow('logout'); 
1
你不想殺死會話

。只將用戶註銷!如果你正在使用

$this->redirect($this->Auth->logout());