所以,我正在使用Symfony 2.6(是的,它已经老了,但我不允许升级)用于项目。目前,我遇到了一个小问题:
如果用户前往
www.url.com/product/G
这应该被允许,他不需要登录。但是,如果转到
www.url.com/product/GProduct
他需要登录。但是,我无法弄清楚要做什么才能告诉Symfony这样做。
我的security.yml中的行如下所示:
access_control:
- { path: /product/[^A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
此RegEx应仅匹配一个字符。但是,它没有做它应该做的事情。我仍然可以访问/product/GProduct
而无需登录。
我怎样才能做到这一点?我可以实现这一点吗?
答案 0 :(得分:0)
使用:
access_control:
- { path: ^/product/[A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
您只能将网址与单个大写字符匹配。
但是如果你想保护/product/GProduct
,你必须添加另一行:
access_control:
- { path: ^/product/GProduct, roles: IS_AUTHENTICATED }
- { path: ^/product/[A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
使用静态^/product/GProduct
或使用正则表达式。