Как исключить конкретную ссылку из регулярного выражения шаблона маршрута Symfony? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть эти параметры в моем app/config/security.yml

parameters:
    sylius.security.api_regex: "^/api"

Это соответствует всем ссылкам, таким как /api/v1/a/, /api/custom/b/ и т. Д.

Я хочу конкретный маршрут, скажем: /api/custom/some/info/ будет удалено из матча.

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Если у вас включен брандмауэр в Symfony, просто установите контроль доступа, укажите этот путь вверху списка и разрешите ему роль, которую никто, кроме вас, не имеет.

app / config / security.yml

access_control:
    #If route is matched matched, will block access to anyone not having ROLE_PRIVATE
    - { path: ^/api/custom/some/info/, roles: [ROLE_PRIVATE] }
    #Else if route is not matched, will allow access to everyone
    - { path: ^/api, roles: [IS_AUTHENTICATED_ANONYMOUSLY] }
0 голосов
/ 28 сентября 2018

Ваше регулярное выражение ^/api(?!/api/custom/some/info/) совпадает с /api в начале строки, а затем не соответствует совпадению, если за ним следует /api/custom/some/info/.

. Вы можете исправить это с помощью

* 1007.*

См. Демонстрационную версию regex

Подробности

  • ^ - начало строки
  • /api - буквальная подстрока ...
  • (?!/custom/some/info/) - сразу за ней не следует /custom/some/info/.

Теперь, если последний слеш является необязательным, вы можете использовать его альтернативныйс концом строки:

^/api(?!/custom/some/info(?:/|$))
                         ^^^^^^^ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...