Я только что обновил мою установку sylius до последней версии и попытался ввести некоторые элементы авторизации в свой код.Пользователь должен снова войти в зону доступа, предоставленную им
Так что я добавить пользовательскую роль в security.yml файл
- { path: "^/pro-account.*", role: ROLE_PRO }
Единственная проблема, контроль доступа не обновляется, чтобы соответствовать новой роли, предоставленной пользователю. Когда я перехожу на страницу с маршрутом - app_dev.php/pro-account/providers/
Мне предоставлена страница с запретом доступа.
В области учетной записи я изменил поставщика меню, чтобы отображать дополнительные пункты меню в зависимости от роли. Таким образом, код if ($this->tokenStorage->getToken()->getUser()->hasRole('ROLE_PRO')) {
правильно идентифицирует пользователя как пользователя ROLE_PRO. Но система контроля доступа этого не делает.
Досадный бит есть, если я выхожу из системы, тогда войдите в него работает. Я просто не знаю, как правильно обновить токен. Я бы подумал, что это автоматически сделает это.
мне нужно добавить дополнительный код в мой код addRole ли
$user = $this->get('security.token_storage')->getToken()->getUser();
$user->addRole('ROLE_ADSUP_PRO');
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
попытался, чтобы он ничего не изменил, попробуйте снова и убедитесь, что я делаю кеш-память – Brett