我是 CakePHP 的新手,尽管搜索了高低,但我无法找到看似微不足道的问题的答案。问题是通过我的 UserController 登录后,我丢失了$this->Auth->user()
在所有其他控制器上找到的数据。任何未与 UserController 关联的视图将始终具有空数据并$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()
在我的其他控制器中使用。