Контроль доступа Symfony позволяет использовать косую черту в имени маршрута - PullRequest
1 голос
/ 30 апреля 2019

Я использую Symfony 3.4. У меня есть маршрут в моем файле security.yml, точнее в ключе access_control. Маршрут проходит примерно так:

- { path: '^/route/subroute/SOME_TOKEN', roles: [ SOME_ROLE ] }

SOME_TOKEN - это строка в кодировке, которая может содержать или не содержать косую черту в дополнение к неизвестному числу других символов.

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

- { path: '^/route/subroute/.+', roles: [ SOME_ROLE ] }

Это дает мне 404: Route not found.. Обратите внимание, что я использую Apache2 с включенной опцией AllowEncodedSlashes.

Полагаю, я просто не знаю, как правильно написать регулярное выражение. Поскольку я тоже плохо разбираюсь в регулярных выражениях, меня это не удивляет.

Я пробовал разные варианты этого. Например (.+), [.+] и т. Д.

# bin/console --env=dev debug:router | grep "/customer/unsubscribe/anon/"
  customer_communication_preferences_unsubscribe_anon           ANY        https    ANY    /customer/unsubscribe/anon/{hash}

Определение маршрута:

customer_communication_preferences_unsubscribe_anon:
    path: /customer/unsubscribe/anon/{hash}
    defaults: { _controller: PizokelCustomerBundle:Communication:unsubscribeAnonCustomer }
    schemes: ['%routing.scheme.my_account%']

1 Ответ

0 голосов
/ 30 апреля 2019

В своем определении маршрута вы не говорите, что hash может быть любым символом.

Попробуйте это:

customer_communication_preferences_unsubscribe_anon:
    path: /customer/unsubscribe/anon/{hash}
    defaults: { _controller: PizokelCustomerBundle:Communication:unsubscribeAnonCustomer }
    schemes: ['%routing.scheme.my_account%']
    requirements:
        hash: .+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...