Я написал систему, в которой фоновый PHP-процесс (написанный с использованием RabbitMQBundle) обрабатывает сообщения из очереди сообщений. Рабочий процесс обновляет учетные записи пользователей. Это может включать изменение в роли пользователя.Недействительный сеанс для определенного пользователя в Symfony2
Проблема заключается в том, что пользователь не заметит никаких изменений в своих ролях во время входа в систему. Новые роли будут применяться только после выхода из системы и снова. С точки зрения безопасности это нежелательно. Пользователь должен потерять любую роль, как только администратор удалит права этого пользователя в бэкэнд-системе.
Вопрос: Как можно обновить сеанс для конкретного пользователя новыми ролями? Или когда это невозможно, как сеанс может быть недействительным?
Обратите внимание, что в фоновом процессе у нас нет активных security.context
или request
, которые мы можем использовать. Код, как это, следовательно, не работает:
$this->get('security.context')->setToken(null);
$this->get('request')->getSession()->invalidate();
Спасибо! Я посмотрю на влияние производительности первого варианта. Любая идея, можно ли сделать вариант 3 с Memcache или Redis в качестве хранилища сеансов? – Xatoo
Я пока не использовал ни одного из них, но, зная возможности каждого из них, я бы сказал, что это полностью выполнимо;) Что касается №1, я использовал эту опцию в проекте с ~ 100 пользователями, и я не заметил любое воздействие. Это имеет смысл, поскольку 100 пользователей довольно низки ... –