Ошибка или ошибка с обновлением ролей Symfony User
На этот раз я получил любопытную ошибку в моем проекте по управлению ролями от пользователя.
Я установил пакет EasyAdmin, где я могу управлять ролями от пользователей. Поэтому я регистрируюсь с пользователем, который имеет доступ к EasyAdmin (ROLE_ADMIN в данном случае). Помимо этой роли, у меня есть еще несколько ролей, одна из которых называется ROLE_SUPERSUSER, где пользователь может редактировать 2 поля, которые остальные пользователи не имеют права редактировать.
Так что бросьте EasyAdmin, я удаляю ROLE_SUPERSUSER из себя, и тут возникает суть вопроса. Если я попытаюсь получить доступ к зоне редактирования из профиля, если у вас есть этот ROLE_SUPERSUSER, вы сможете редактировать это поле, но, поскольку я удалил эту роль из себя, я ожидаю, что не буду просматривать эти поля там. Вместо этого на экране появляется ошибка.
Если я просто выйду и войду снова, проблема решена. Но, очевидно, я не могу заставить пользователей выходить из системы и входить в систему, когда я меняю их роли.
Я предполагаю, что проблема прибывает, бросьте кэш, но я не нахожу решение.
2 ответа
Я смог найти решение благодаря KNPUniversity.
Передача решения создает создание слушателя, который обновляет пользователя перед каждым контроллером.
Я получил идеи по этим ссылкам:
https://github.com/symfony/symfony/pull/24331
С особым вниманием к этой ссылке:
Роли Symfony добавляются при аутентификации по умолчанию, поэтому вам нужно будет повторно войти в систему, чтобы это изменение вступило в силу.
Вы можете изменить это в security.yml
,
security:
always_authenticate_before_granting: true