FOSUserBundle / Symfony2: принудительный выход пользователя, данного пользователя (но не текущего пользователя) - PullRequest
4 голосов
/ 09 марта 2012

Всякий раз, когда я редактирую роль пользователя, пользователю необходимо выйти и снова войти в систему, чтобы увидеть изменения. При продвижении пользователей проблем не возникает, так как они не увидят дополнительные разрешения до повторного входа. Тем не менее, когда понижение в должности должно было произойти, пользователь все равно сохранит свою существующую роль, которая создает угрозу безопасности. Представьте себе, что вы можете отозвать пользователя-администратора из-за мошеннического сотрудника, и он по-прежнему сможет делать что угодно (например, саботировать систему) до тех пор, пока он не выйдет из системы!

Можно ли сделать недействительными все сеансы или токены, связанные с конкретным пользователем? Если есть другой способ динамического обновления ролей пользователя без выхода из системы, я бы хотел это услышать!

Просто чтобы прояснить ситуацию, я не пытаюсь сделать недействительным зарегистрированный в данный момент сеанс / токен пользователя.

Заранее спасибо!

1 Ответ

2 голосов
/ 10 марта 2012

Symfony хранит сериализованный объект токена под ключом _security_match_firewall_name в сеансе. Вы можете отменить его сериализацию, отфильтровать роль и затем снова сохранить. Для чтения / сохранения значений сеанса вы можете использовать PdoSessionStorage. Возможно, вам придется создать дополнительную таблицу для отслеживания сеанса пользователей.

...