У меня есть простое приложение Grails с установленным и работающим плагином Spring Security Core.Тем не менее, я не нашел решения проблемы с обновлением авторизованных пользователей в контексте безопасности.Я не говорю об обновлении данных текущего пользователя (например, springSecurityService.reauthenticate).
Моя проблема: у меня есть простое приложение для управления пользователями с использованием полномочий ROLE_ADMIN и ROLE_USER.Теперь у меня есть два администратора, вошедшие в систему одновременно (с правами ROLE_ADMIN) с разных компьютеров, и один администратор решает изменить права другого администратора с ROLE_ADMIN на ROLE_USER.
Как я могу обновить пользователя и рольчтобы измененный пользователь (с новой ролью ROLE_USER) не мог выполнить никаких действий уровня ROLE_ADMIN и был немедленно перенаправлен на страницы уровня ROLE_USER?Есть ли способ обновить контекст безопасности, чтобы мне не приходилось делать дополнительную проверку во всех действиях контроллера, были ли изменены права доступа вошедшего в систему пользователя?Могу ли я использовать для этого свойство cahceUsers?Я не модифицировал cacheUsers и, по моему мнению, по умолчанию это false.Пожалуйста, исправьте меня, если я ошибаюсь.
РЕДАКТИРОВАТЬ: последовательность, которая вызывает проблему:
Администратор "A" изменяет администратор "B" и устанавливает новыйроль (ROLE_USER) для администратора "B"
код вызывает PersonRole.removeAll(personInstanceB) and
PersonRole.create(personInstanceB, roleAdmin)
и все обновляется в обычном режиме
одновременно "Администратор"B "уже вошел в систему, когда их полномочия изменены.Администратор "B" может продолжать работать на страницах с ограниченным доступом ROLE_ADMIN до тех пор, пока он не выйдет из системы и не выполнит новый вход в систему.Только после этого полномочия обновляются, и администратор "B" получает новую роль (ROLE_USER)
Я хочу, чтобы администратор "B" перенаправлялся на страницы ROLE_USER, когда пользователь обновляется с помощьюновая роль, а не только после выхода из системы / входа в систему
вызов springSecurityService.reauthenticate personInstanceB.username)
приводит к тому, что администратор "A" "входит в систему" как администратор "B", поэтому это не работает.
Любые идеи приветствуются.Возможно, я упустил что-то простое здесь, но я не знаю, каким будет решение.
Cheers, mizzzto