Я пытаюсь изменить роль пользователя, используя FOSUserBundle. Проблема в том, что если пользователь в то же время вошел в систему, он должен повторно войти в систему, чтобы увидеть новую роль.
Любые решения?
Я пытаюсь изменить роль пользователя, используя FOSUserBundle. Проблема в том, что если пользователь в то же время вошел в систему, он должен повторно войти в систему, чтобы увидеть новую роль.
Любые решения?
Согласно Справочнику по настройке безопасности, есть вариант always_authenticate_before_granting
. Информации об этом не так много, но я пробовал это с загрузкой пользовательских ролей из базы данных, и это помогло. Похоже, каждый раз, когда вы делаете новый запрос, компонент безопасности перезагружает роли.
Поэтому, если вы хотите, чтобы ваши роли обновлялись и перезагружались в сеансе пользователя, просто установите для этой опции значение true
в вашем security.yml
:
# app/config/security.yml
security:
always_authenticate_before_granting: false
Попробуйте это в своем контроллере:
$this->get('fos_user.user_manager')->refreshUser($user);
См. FOS/UserBundle/Model/UserManager.php.
1: Вы должны включить switch_role: true в конфигурации вашего брандмауэра. 2: Затем вы должны разрешить роли ROLE_ADMIN переключаться на другую роль. 3: просто сделайте ссылку на ?_switch_role=userNameCanonical
это в основном делается Symfony Security fos не имеет ничего общего с переключением ролей.