2011-08-07 20 views
1

私はこれが本当にばかげたものでなければならないことを知っていますが、ログアウトに問題があります。 Auth-> logout()を呼び出した後でも、完全なユーザー認証変数が引き続き表示されます。CakePHPのログアウトの問題

function login() 
{ 
} 

function logout() 
{ 
    $this->redirect($this->Auth->logout()); 
} 

しかし、私はログアウトを呼び出すときに、私の見解では、私はまだこれを行うことにより、ユーザーを印刷することができます:私のユーザーのコントローラでは、私は、標準を持って

$auth = $this->Session->read('Auth.User'); 
print "<pre>"; 
print_r($auth); 
print "</pre>"; 

私はここで基本的な何かが足りないのですか?ありがとう!

+0

pr($ auth)も同じです! – mark

答えて

0

CakePHPがPHPセッションを使用していて、独自のセッションを使用していない場合、ログアウト時にセッションをクリアするには、session_destroy();を使用します。申し訳ありませんがCakePHPの経験はありませんので、私は前提を外しています。

0

どのケーキバージョンをお持ちですか?私はあなたが手動でケーキ1.2でセッションをクリアする必要があると思います。より新しいCakeでは、logout関数が呼び出されると、Auth.Userがクリアされます。私はそれを確信しています。

0

私はまったく同じコードを使用するので、このshoudn'tが動作する理由を見ることができません... メソッドが実際に呼び出されたことを確認しましたか? Authログアウト部分の前にある単純な "die( 'xyz')などは、あなたのアクションコードがトリガーされたことを確認できます。

5

鉱山:

function logout() { 
    $this->Session->destroy(); 
    $this->redirect($this->Auth->logout()); 
} 
5

あなたがログアウト機能の使用を許可していない、とユーザーがリダイレクトの代わりにログアウトされます。機能ログアウト含むあなたのコントローラで

、あなたの前にフィルタでこれを追加します。

$this->Auth->allow('logout'); 
+2

は古い質問ですが、cakephp 2.0料理書のaclチュートリアルに従う人は誰もがこの問題に終わるでしょう... –

+0

joeあなたは正しいです。この問題は時間の邪魔になります+1 – zamil

+0

@ joe.smack私Cookbookのチュートリアルに続いて今日AuthComponent :: allow()の問題が数多くありました。 –

1

をアプリのコントローラでは、あなたが許可されていないエントリの場合には、LoginActionのを定義する必要があり、ビューがそれにリダイレクトされますURL

'Auth' => array(
    'loginRedirect' => array('controller' => 'products', 'action' => 'all'), 
    'logoutRedirect' => array('controller' => 'products', 'action' => 'index'), 
    'loginAction' => array('controller'=>'admins', 'action'=>'login'), 
) 
1

あなたはただ1つのラインでUserControllerで中のbeforeFilter()関数を作成する場合は、ユーザーモデルの承認を破るだろうことがわかります。つまり、どのユーザーもユーザー/追加、ユーザー/編集などを行うことができます。これを修正するには、AppControllerのbeforeFilterを呼び出す必要があります。完全なbeforeFilter()関数は次のようになります。

public function beforeFilter() { 
     parent::beforeFilter(); 
     $this->Auth->allow('logout'); 
}