На этот раз у меня возникла любопытная ошибка в моем проекте с управлением ролями от пользователя.
Я установил пакет EasyAdmin, в котором я могу управлять ролями пользователей. Поэтому я вхожу в систему с пользователем, у которого есть доступ к EasyAdmin (в данном случае ROLE_ADMIN). Помимо этой роли у меня есть еще несколько ролей, одна из которых называется ROLE_SUPERSUSER, где пользователь может редактировать 2 поля, которые остальные пользователи не имеют права редактировать.
Так что бросьте EasyAdmin, я удаляю от себя ROLE_SUPERSUSER, и вот вам суть дела. Если я попытаюсь получить доступ к зоне редактирования из профиля, если у вас есть этот ROLE_SUPERSUSER, вы сможете редактировать это поле, но, поскольку я удалил эту роль от себя, я не собираюсь смотреть эти поля там. Вместо этого на экране появляется ошибка.
Если я просто выйду из системы и снова войду, проблема будет решена. Но, очевидно, я не могу заставить пользователей выходить из системы и входить в систему, когда я меняю их роли.
Я предполагаю, что проблема возникает в кеше, но я не нахожу решения.




Роли Symfony добавляются при аутентификации по умолчанию, поэтому вам придется повторно войти в систему, чтобы это изменение вступило в силу.
Вы можете изменить это в security.yml.
security:
always_authenticate_before_granting: true
Я смог найти решение благодаря KNPUniversity.
Проход решения вызывает создание слушателя, который обновляет пользователя перед каждым контроллером.
Я получил идеи по этим ссылкам:
https://github.com/symfony/symfony/pull/24331
С особым вниманием к этой ссылке:
https://github.com/symfony/symfony/issues/12025#issuecomment-219723819