4

我是 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()在我的其他控制器中使用。

4

2 回答 2

2

我相信我找到了解决方案。在我的 HomeController 中,这是我登录后一直查看的页面,似乎在关闭 php 声明之后有一些不可见的字符?>(也不需要)所以我删除了它,?>瞧,一切正常正如预期的那样。

在我尝试在我的布局中手动使用之后,我被告知有什么不对劲,并且在 HomeController 类session_start()中给出了关于该行的错误。?>

于 2013-01-25T17:54:54.837 回答
1

我认为你应该在你的类中设置loggedIn函数beforeRender()AppController不是beforeFilter().

public function beforeRender() {
    $this->set('loggedIn', $this->Auth->user());   
}
于 2013-01-25T17:52:43.047 回答