2016-12-31 3 views
0

я должен использовать LoggedIn пользовательские данные в зрения поэтому создание переменной AUTH_USER в AppController в beforeRender функции.Фатальная ошибка: Обращение к пользователю функции член() на булевой

82  public function beforeRender(Event $event) 
83  { 
84   if ($this->Auth->user('id')) { 
85   $this->set('AUTH_USER', $this->Auth->user()); 
86   } 
87   ... 
88   ... 
89  } 

Всякий раз, когда возникает ошибка, вместо того, чтобы отображать фактическую ошибку он показывает следующее сообщение об ошибке без стиля форматирования

Fatal error: Uncaught Error: Call to a member function user() on boolean in /path_to_app/src/Controller/AppController.php:84 
Stack trace: #0 /path_to_app/src/Controller/ErrorController.php(54): App\Controller\AppController->beforeRender(Object(Cake\Event\Event)) 
#1 /path_to_app/vendor/cakephp/cakephp/src/Event/EventManager.php(422): App\Controller\ErrorController->beforeRender(Object(Cake\Event\Event)) 
#2 /path_to_app/vendor/cakephp/cakephp/src/Event/EventManager.php(391): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event)) 
#3 /path_to_app/vendor/cakephp/cakephp/src/Event/EventDispatcherTrait.php(78): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event)) 
#4 /path_to_app/vendor/cakephp/cakephp/src/Controller/ in /path_to_app/src/Controller/AppController.php on line 84 

Удаление строки 84 - 86 отображает фактическую ошибку

Edit 2

код для компонента Auth загрузить в AppController initialize()

Я написал следующий код для загрузки компонента AUTH.

$this->loadComponent('Auth', [ 
    'authenticate' => [ 
     'Form' => [ 
     'userModel' => 'Admins', 
      'fields' => [ 
       'username' => 'email', 
       'password' => 'password' 
      ] 
     ] 
     ], 
     'loginAction' => [ 
     'controller' => 'Admins', 
     'action' => 'index' 
     ], 
     'loginRedirect' => [ 
     'controller' => 'Admins', 
     'action' => 'contentList' 
     ], 
     'authError' => 'Did you really think you are allowed to see that?', 
     'logoutAction' => [ 
     'controller' => 'Pages', 
     'action' => 'home' 
     ] 
]); 
+0

При загрузке компонента вам не хватает ']'. – doonot

ответ

3

Я имел ту же ошибку, и если добавить эту строку в beforeRender() она должна работать:

$this->loadComponent('Auth'); 

Это может быть, что вы не правильно инициализировать компонент в функции initialize().

+0

Если данные пользователя уже присутствуют в сеансе 'Auth'. Зачем возвращаться из базы данных? Это может быть уязвимым, так как извлечение пользовательской записи, пароля и других скрытых данных также будет восстановлено. Кроме того, поскольку код находится в 'AppController', данные пользователя loggedIn будут извлекаться с каждым HTTP-запросом, отправленным на сервер. –

+0

Ошибка возникает даже после того, как я изменил свой код соответственно в соответствии с вашим ответом. error is on line 'if (! empty ($ this-> Auth-> user ('id')))'. –

+0

Вы загружаете компонент «Auth» в функцию initialize()? – doonot

0

Вы не указали правильный идентификатор оператора if для проверки. Вы должны отправить зарегистрированный идентификатор пользователя с помощью параметров функции, а затем проверить этот идентификатор в инструкции if.

+0

даже удаление if выражает ошибку в $ this-> set ('AUTHUSER', $ this-> Auth-> user()); –

+0

происходит ли эта ошибка, даже если пользователь вошел в систему? – Aarrbee

+1

Да, ошибка возникает после входа в систему также –

Смежные вопросы