Почему сеанс не очищается в незащищенной области Symfony?

Я реализовал компонент безопасности Symfony следующим образом:

$app['security.firewalls'] = array(
'unsecured_area' => array(
pattern' => new RequestMatcher('^/log(in|out).*', null, 'GET')
)
, 'secured_area' => array(
'pattern' => '.*',
'edir' => true,
'users' => $app['security.user_provider.custom'],
'switch_user' => array('parameter' => '_switch_user', 'role' => 'ROLE_ALLOWED_TO_SWITCH')
)
);

Когда я вызываю маршрут выхода из системы, я просто отменяю сессию.

Насколько я понимаю, контекст безопасности хранится в сеансе, этого должно быть достаточно, чтобы выйти из системы моего пользователя. Но он не вышел из системы.

Если я обновлю свой брандмауэр, поместив маршрут выхода в защищенную область, $session->invalidate() работает нормально и пользователь вышел из системы …

Почему это не работает в незащищенной области? Необеспеченная область не означает отсутствие сессии, не так ли?

0

Решение

Проще говоря, в незащищенной области Symfony2 использует то, что он называет AnonymousToken, даже если у него есть активный сеанс, он не заполнен учетными данными пользователя.

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

надеюсь, это поможет

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]