Symfony - 通过正则表达式访问控制

时间:2016-04-29 11:52:18

标签: regex symfony

所以,我正在使用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而无需登录。

我怎样才能做到这一点?我可以实现这一点吗?

1 个答案:

答案 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或使用正则表达式。