私はcakePHPプロジェクトでadmin_actionsを有効にしました。通常の従業員用のlogout( )と管理者ログアウト用のadmin_logout()があります。どちらのアクションもEmployeesControllerに属しています。
フラッシュメッセージを除いて、両方のログアウトアクション内のコードは同じです。
admin_logout():
$this->Session->destroy();
$this->Session->setFlash('You have been logged out of admin dashboard!','flash_success');
$this->redirect('/employees/login');
ログアウト()
$this->Session->destroy();
$this->Session->setFlash('You have been logged out!','flash_success');
$this->redirect('/employees/login');
ログアウトは完全に機能しており、セッションが破棄されます。ただし、admin_logout()ではありません。
デバッグのために、私はadmin_logout()でこれを試しました:
$this->Session->delete('Admin');
$this->Session->setFlash('You have been logged out of admin dashboard!','flash_success');
$this->redirect('/employees/login');
それも働いています。しかし、それでも完全なセッション変数を破壊することはありません。管理者と従業員の両方に通常のlogout()を使用することで、これを修正できます。しかし、好奇心から、ここで何がうまくいかないのでしょうか?
編集:必要な動作は、セッション変数の破棄、そしてフラッシュメッセージによるリダイレクトです。しかし、何が起こるかはリダイレクトであり、フラッシュメッセージが表示されますが、セッション変数は破棄されません!