Я реализовал компонент безопасности 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()
будет работать нормально, и пользователь выйдет из системы...
Почему не работает в неохраняемой зоне? Незащищенная область не означает зону без сеанса, не так ли?