Проблемы с выходом из CakePHP - PullRequest
       0

Проблемы с выходом из CakePHP

1 голос
/ 07 августа 2011

Я знаю, что это должно быть что-то действительно глупое, но у меня проблемы с выходом из системы.Я по-прежнему вижу полную пользовательскую переменную Auth после вызова Auth-> logout ().В моем контроллере пользователей у меня есть стандарт:

function login()
{
}

function logout()
{
  $this->redirect($this->Auth->logout());
}

Но когда я вызываю выход из системы, на мой взгляд, я все еще могу напечатать пользователя, выполнив это:

<code>$auth = $this->Session->read('Auth.User');
print "<pre>";
print_r($auth);
print "
";

Я что-то упустил здесь? Спасибо!

Ответы [ 7 ]

5 голосов
/ 17 мая 2012

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

в вашем контроллере, содержащем функцию выхода из системы, добавьте это в свой фильтр before:

    $this->Auth->allow('logout');
5 голосов
/ 07 августа 2011

мой:

function logout() {
    $this->Session->destroy();
    $this->redirect($this->Auth->logout());
}
1 голос
/ 22 ноября 2013

Вы обнаружите, что если вы просто создадите функцию beforeFilter () в UserController с этой одной строкой, вы нарушите авторизацию в модели Users.То есть, любой пользователь сможет делать пользователей / добавлять, пользователей / редактировать и т. Д. Чтобы это исправить, обязательно вызовите AppFontroller beforeFilter.Полная функция beforeFilter () выглядит следующим образом:

public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('logout');
}
1 голос
/ 07 ноября 2013

В вашем контроллере приложения вы должны определить loginAction, в случае неавторизованной записи представление перенаправляется на этот URL

'Auth' => array(
    'loginRedirect' => array('controller' => 'products', 'action' => 'all'),
    'logoutRedirect' => array('controller' => 'products', 'action' => 'index'),
    'loginAction' => array('controller'=>'admins', 'action'=>'login'),
)
0 голосов
/ 07 августа 2011

Я не вижу причины, по которой это не сработает, поскольку я использую точно такой же код ... Вы подтвердили, что метод на самом деле вызывается? простой "die ('xyz')" и т. д. перед тем, как часть Auth logout может подтвердить, что ваш код действия активирован.

0 голосов
/ 07 августа 2011

какая версия торта у вас есть?Я думаю, что вы должны вручную очистить сессию в Cake 1.2.В более новом Cake, если вызывается функция выхода из системы, она очищает Auth.User;Я уверен в этом.

0 голосов
/ 07 августа 2011

Если CakePHP использует сеансы PHP и не катит свои собственные, вы можете просто очистить сеанс при выходе из системы через session_destroy();.Извините, у меня нет опыта CakePHP, поэтому я просто отказываюсь от предположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...