我正在使用symfony 3.4。我的security.yml文件中有一条路由,更具体地说,在access_control
键中有一条路由。路线如下所示:
- { path: '^/route/subroute/SOME_TOKEN', roles: [ SOME_ROLE ] }
SOME_TOKEN
是一个urlencoded字符串,除了未知数量的其他字符外,它可能包含也可能不包含正斜杠。
从文档所说的here来看,我的路线应如下所示:
- { path: '^/route/subroute/.+', roles: [ SOME_ROLE ] }
它给了我404: Route not found.
。请注意,我使用的是启用了AllowEncodedSlashes
选项的Apache2。
我的猜测是我根本不知道如何正确编写正则表达式。由于我也对正则表达式不好,所以这对我来说并不奇怪。
我尝试了不同的变化。例如(.+)
,[.+]
等
# 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%']
答案 0 :(得分:0)
在路由定义中,您并不是说hash
可以是任何字符。
尝试一下:
customer_communication_preferences_unsubscribe_anon:
path: /customer/unsubscribe/anon/{hash}
defaults: { _controller: PizokelCustomerBundle:Communication:unsubscribeAnonCustomer }
schemes: ['%routing.scheme.my_account%']
requirements:
hash: .+