Я использую компонент аутентификации cakephps для входа на свой сайт. Когда я правильно ввожу свое имя пользователя и пароль, он войдет в систему. Затем, когда я использую loggedIn() для проверки того, что я вошел в систему, он очень непоследовательно возвращает значение true. Это мой AppController, где я устанавливаю loggedIn() в переменную для последующего использования:
<?php
App::uses('Controller', 'Controller');
App::uses('File', 'Utility');
App::uses('AuthComponent', 'Component');
class AppController extends Controller {
public $components = array(
'Session',
'Auth'=>array(
'loginRedirect'=> array('controller'=>'users', 'action'=>'index'),
'logoutRedirect'=> array('controller'=>'users', 'action'=>'index'),
'authError' =>"You can't access that page",
'authorize'=> array('Controller')
)
);
//determines what logged in users have access to
public function isAuthorized($user){
return true;
}
//determines what non-logged in users have access to
public function beforeFilter(){
$this->Auth->allow('index','view');
$this->set('logged_in', $this->Auth->loggedIn());
$this->set('current_user', $this->Auth->user());
}
}
И вот немного моего кода, где я использую «logged_in»
<?php if($logged_in): ?> //this only returns true some of the time
Welcome <?php echo $current_user['username']; ?>. <?php echo $this->Html->link('Logout', array('controller'=>'users', 'action'=>'login')); ?>
<?php else: ?>
<?php echo $this->Html->link('Login', array('controller'=>'users', 'action'=>'logout')); ?>
<?php endif; ?>
А вот мой логин():
public function login(){
if($this->request->is('post')){
if($this->Auth->login()){ //this returns true every time
$this->redirect($this->Auth->redirect());
}else{
$this->Session->setFlash('Your username and/or password is incorrect');
}
}
}
Я попытался вызвать $this->Auth->loggedIn() вместо использования $logged_in, но получаю сообщение об ошибке, что не удается найти помощника аутентификации. Пожалуйста, дайте мне знать, если есть какая-либо дополнительная информация, необходимая для ответа на мой вопрос.