Php Symfony2使用i18n路由进行访问控制

Php Symfony2使用i18n路由进行访问控制,php,symfony,internationalization,Php,Symfony,Internationalization,我有一个symfony2项目,其中有一个用于登录用户的部分。国际化后,该网站以5种不同的语言存在。由于成员区域的原因,我在security.yml中有一个很长的访问控制规则列表,在此之前,我无法简化acl列表,如果出现新语言,我必须再次添加所有acl规则以及翻译后的路由。 例如,默认路由是/help what need ROLE_USER,但在德语中该路由是/hilfe 有没有更简单的方法来处理这个问题,比如复制翻译后的路径?您好,您的web应用程序只供登录用户使用吗? 在这种情况下,您可以简单

我有一个symfony2项目,其中有一个用于登录用户的部分。国际化后,该网站以5种不同的语言存在。由于成员区域的原因,我在security.yml中有一个很长的访问控制规则列表,在此之前,我无法简化acl列表,如果出现新语言,我必须再次添加所有acl规则以及翻译后的路由。 例如,默认路由是/help what need ROLE_USER,但在德语中该路由是/hilfe


有没有更简单的方法来处理这个问题,比如复制翻译后的路径?

您好,您的web应用程序只供登录用户使用吗? 在这种情况下,您可以简单地如下设置访问控制:

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/, role: ROLE_USER }
也可以为角色添加前缀。表示所有匹配的/user/*都是角色\u user所必需的

access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }
    - { path: ^/user/, role: ROLE_USER }

希望它能帮助你,即使它不是你问题的确切答案。

正如@jan Dockal所说,你可以在path中使用正则表达式。 通过正则表达式,您可以为macth
^/user/
想要匹配
/user/help
/user/hilfe
的任何url设置角色

但我建议您使用自定义策略


我希望这能帮助你:)

正如我写的那样,我有一个长长的访问控制元素列表,不仅仅是管理员和用户,比如25个不同的路由模式。我正在使用i18n bundle,但我仍然不知道它与我的访问控制问题有什么关系。对不起,我指定了路由是翻译的,帮助到hilfe,并且没有使用locale作为前缀。它看起来像一个完全不同的应用程序,不同的主机,我用i18n路由包解决了这个问题,我在那里翻译了路由。