как я могу сказать, что я хочу, чтобы URL-адрес, например, такой как /users/{id}/confirm, был общедоступным????
я пробовал с
- { path: ^/users/{id}/confirm, roles: PUBLIC_ACCESS }
и синтаксис неверен, также я пытался покрыть URL-адрес кавычками и получил ответ 404.
Третья попытка:
- { path: ^/users/\[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/confirm, roles: PUBLIC_ACCESS }
yaml неправильный






#config/packages/security.yaml
security:
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/users, roles: ROLE_USER}
- { path: ^/register, roles: PUBLIC_ACCESS }
И в вашем контроллере вы можете использовать аннотации или ограничения атрибутов:
#[IsGranted('ROLE_USER', statusCode: 403, message: 'Please to login..')]
#[Route('/users/{id}', name: 'name_of_..')]
Дополнительная информация: https://symfony.com/doc/current/security/access_control.html#2-access-enforcement
Возможно, попробовать разные роли в ваших атрибутах/аннотациях ограничений.
найдено `- { атрибуты: {'_route': 'admin'}, роли: ROLE_ADMIN }` так что, может быть, я могу сделать это по имени маршрута, попробую
вместо использования идентификатора заполнителя вам нужно использовать числовой заполнитель
// config/packages/security.yaml
security:
access_control:
- { path: ^/users/\d+$/confirm, roles: PUBLIC_ACCESS }
но мой идентификатор UUID не целое число
исправлено использованием имени маршрута вместо пути. Так:
- { attributes: {'_route': 'confirmEmail'}, roles: PUBLIC_ACCESS }
это я знаю, но я хочу, чтобы все конечные точки пользователя были закрытыми, кроме этой конкретной
/users/{id}/confirm, ну, если это невозможно, я могу сделать это так/confirm?id=