私はCakePHPを初めて使用します。高低を検索しても、些細な問題のように思われる答えを見つけることができません。問題は、UserControllerを介してログインした後、$this->Auth->user()
他のすべてのコントローラーで見つかったデータが失われることです。UserControllerに関連付けられていないビューには、常にnullデータが含まれ、$this->Auth->loggedIn()
falseが返されます。
AppControllerクラスでbeforeFilter()
は、ビューで変数を確認できるように、データを内部の変数に保存しようとしましたが、違いはありません。UserControllerクラスとAppControllerクラスの関連コードは次のとおりです。
class AppController extends Controller {
// Pass settings in $components array
public $components = array(
'Session',
'Auth' => array(
'loginRedirect' => array('controller' => 'home', 'action' => 'index'),
'logoutRedirect' => array('controller' => 'home', 'action' => 'index')
)
);
public function beforeFilter() {
//debug($this->Auth->user());
$this->set('loggedIn', $this->Auth->user());
}
}
ユーザークラス:
App::uses('AppController', 'Controller');
class UsersController extends AppController {
public $helpers = array('Html', 'Form');
public $name = 'Users';
public function beforeFilter() {
parent::beforeFilter();
}
public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth');
}
}
}
public function logout() {
return $this->redirect($this->Auth->logout());
}
}
parent::beforeFilter()
他のコントローラーでも使用するようにしています。