Изменение роли удаленного пользователя без повторного входа в систему

Я пытаюсь изменить роль пользователя, используя FOSUserBundle. Проблема в том, что если пользователь в то же время вошел в систему, он должен повторно войти в систему, чтобы увидеть новую роль.

Любые решения?


person Joffrey    schedule 10.02.2012    source источник
comment
Как вы получили ответ? Я сталкиваюсь с той же проблемой...   -  person Gabriel Filipiak    schedule 16.11.2012


Ответы (3)


Согласно Справочнику по настройке безопасности, есть вариант always_authenticate_before_granting. Информации об этом не так много, но я пробовал это с загрузкой пользовательских ролей из базы данных, и это помогло. Похоже, каждый раз, когда вы делаете новый запрос, компонент безопасности перезагружает роли.

Поэтому, если вы хотите, чтобы ваши роли обновлялись и перезагружались в сеансе пользователя, просто установите для этой опции значение true в вашем security.yml :

# app/config/security.yml
security:
    always_authenticate_before_granting:  false
person iamdto    schedule 14.11.2012
comment
Кажется, это удваивает обработку страницы в последних версиях symfony... :( - person Hugo H; 31.03.2016
comment
Увеличит ли это ввод-вывод базы данных? - person tom10271; 09.08.2016

Попробуйте это в своем контроллере:

$this->get('fos_user.user_manager')->refreshUser($user);

См. FOS/UserBundle/Model/UserManager.php.

person rtyshyk    schedule 10.02.2012
comment
Спасибо за ваш ответ, но это не совсем то, что я ищу. Я уже могу обновить роли пользователя в текущем сеансе. Я пытаюсь обновить роль удаленного пользователя. Допустим, я администратор и хочу изменить роль подключенного пользователя. Ему придется перезайти, чтобы увидеть новую роль... Как я могу избежать этого и заставить ее мгновенно измениться? Спасибо. - person Joffrey; 14.02.2012

1: Вы должны включить switch_role: true в конфигурации вашего брандмауэра. 2: Затем вы должны разрешить роли ROLE_ADMIN переключаться на другую роль. 3: просто сделайте ссылку на ?_switch_role=userNameCanonical

это в основном делается Symfony Security fos не имеет ничего общего с переключением ролей.

person Max Małecki    schedule 10.02.2012