0

我正在尝试实现 Audit Trail 插件 - https://github.com/robwilkerson/CakePHP-Audit-Log-Plugin

一切都很好,但是我无法按照说明进行用户身份验证,但出现以下错误-

Fatal error: Call to undefined method CakeErrorController::currentUser()

我已按照说明添加

protected function currentUser() {
      $user = $this->Auth->user();
      return $user[$this->Auth->userModel]; # Return the complete user array
}

并添加

public function beforeFilter() {
        ...
        if( !empty( $this->data ) && empty( $this->data[$this->Auth->userModel] ) ) {
          $this->data[$this->Auth->userModel] = $this->currentUser();
        }
   }

到我的 appController 之前,有没有人实现过这个或认识到错误?

4

2 回答 2

1

对于 Cakephp 2.4,您必须进行一些更改才能使用 Auth 组件:

在应用模型中:

public function currentUser() {
  $userId = AuthComponent::user('id');

  //Get the information of the user
  $currentUser = $this->importModel('User')->find('first', array(
      'conditions'=>array('User.id'=>$userId),
  ));

  //Return all the User
  return $currentUser['User'];
}

现在在你的 AppController 中:真正的是你不需要在你的控制器中做任何其他事情,它只是为了防止一些问题。所以,可选

  if( !empty( $this->request->data ) && empty( $this->request->data[$this->Auth->userModel] ) ) {
        $user['User']['id'] = $this->Auth->user('id');
        $this->request->data[$this->Auth->userModel] =  $user;
    }

这个对我有用。

于 2014-04-16T12:09:00.580 回答
0

不要将该currentUser()功能添加到您的AppController中,它必须在您的AppModel. 这是我的currentUser()函数使用 CakePHP 2.3 的样子:

public function currentUser() {
    return array('id' => AuthComponent::user('id'));
}
于 2013-04-09T18:23:01.473 回答