Изменить роль удаленного пользователя без необходимости повторного входа - PullRequest
8 голосов
/ 10 февраля 2012

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

Какие-либо решения?

Ответы [ 3 ]

12 голосов
/ 15 ноября 2012

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

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

# app/config/security.yml
security:
    always_authenticate_before_granting:  false
0 голосов
/ 11 февраля 2012

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

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

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

0 голосов
/ 10 февраля 2012

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

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

...