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

Regex Symfony-通过正则表达式进行访问控制,regex,symfony,Regex,Symfony,因此,我将Symfony 2.6(是的,它很旧,但不允许升级)用于一个项目。目前,我遇到了一个小问题: 如果用户转到 www.url.com/product/G 这应该是允许的,他不需要登录。但是,如果 www.url.com/product/GProduct 他必须登录。然而,为了让Symfony做到这一点,我不知道该怎么做 my security.yml中的行如下所示: access_control: - { path: /product/[^A-Z]$, roles: IS_AUT

因此,我将Symfony 2.6(是的,它很旧,但不允许升级)用于一个项目。目前,我遇到了一个小问题:

如果用户转到

www.url.com/product/G

这应该是允许的,他不需要登录。但是,如果

www.url.com/product/GProduct

他必须登录。然而,为了让Symfony做到这一点,我不知道该怎么做

my security.yml中的行如下所示:

access_control:
    - { path: /product/[^A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
此正则表达式应仅匹配一个字符。然而,它没有做它应该做的。我仍然可以访问
/product/gpproduct
,而无需登录

我怎样才能做到这一点?我能做到这一点吗?

需要:

access_control:
    - { path: ^/product/[A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
您只能将url与单个大写字符匹配

但如果要保护
/product/gpproduct
,则必须添加另一行:

access_control:
    - { path: ^/product/GProduct, roles: IS_AUTHENTICATED }
    - { path: ^/product/[A-Z]$, roles: IS_AUTHENTICATED_ANONYMOUSLY }

使用static
^/product/gpproduct
或Regex.

我认为您需要使用
/product/[A-Z]$
来实际允许在末尾使用一个大写字母<代码>[^A-Z]匹配除大写ASCII字母外的1个字符。