Cakephp Auth-> user () null

0

В моем приложении CakePHP я хочу включить форму входа на каждую страницу с кнопкой входа в систему, если пользователь не вошел в систему и кнопка выхода из системы, если они вошли в систему.

Вот моя конфигурация Auth в AppController.php

var $components = array
(
    'Auth' => array
    (
        'authenticate' => array
        (
            'Form' => array
            (
                'fields' => array('username' => 'email'),
                'passwordHasher' => array
                (
                    'className' => 'Simple',
                    'hashType' => 'sha256'
                )
            )
        )
    ),
    'Session'
);

Я хочу установить флаг, который можно использовать во всех представлениях, чтобы проверить, вошел ли пользователь в систему. Я попытался сделать это через AppController :: beforeFiter()

function beforeFilter()
{
    parent::beforeFilter();
    $this->layout = 'default'; 
    var_dump($this->Auth->user());
    $this->set("isLoggedIn",$this->Auth->loggedIn());
}

Каждый контроллер работает, за исключением PagesController. Просто чтобы убедиться, что это не проблема разрешения/запрета, это PagesController :: beforeFilter

function beforeFilter()
{
    parent::beforeFilter();
    $this->Auth->allow();       
}

AppController :: beforeFilter() действительно вызывает вызов, когда я перехожу на домашнюю страницу, но var_dump ($this-> Auth-> user()) в AppController :: beforeFilter() печатает NULL.

Является ли аутентификация пользователя недоступной для статических страниц?

Теги:
cakephp

2 ответа

0
Лучший ответ

Я нашел проблему после много отладки. Проблема в том, что у PagesController был дополнительный символ пробела до или после скобок. Поэтому заголовки считались уже отправленными, а session_start() нельзя было назвать должным образом. Если это произойдет с кем-либо еще, проверьте пробелы в своих контроллерах или моделях.

Если вы не можете найти, куда отправляются заголовки, попробуйте использовать функцию headers_sent(), проходящую в параметрах, чтобы узнать, куда были отправлены заголовки.

0

Для этого вы можете опустить закрывающий тег php (?>) Из php файлов, таких как контроллер, модалы

Ещё вопросы

Сообщество Overcoder
Наверх
Меню