2

我需要帮助来配置我的 symfony 网站的访问控制部分。我希望每个人都可以访问:

/ : the homepage
/login : the login page
/login_check : the check login page for FOSUserBundle
/register : the register page of FOSUserBundle
/resetting/request : the resetting password page of FOSUserBundle

我希望用户对所有其余部分进行身份验证,例如:/abc、/xxx、/yy/xx ...等

我把它放在security.yml中,但它不起作用,用户在所有情况下都可以完全访问:

access_control:    
        - { path: /_wdt/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /_profiler/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /login, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /login_check, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /resetting/request, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: /*, role: IS_AUTHENTICATED_FULLY }

有什么问题 ?

谢谢 ;)

4

2 回答 2

3

acls的奇怪使用。acl 正则表达式要简单得多。^标记网址的开头。$标记匹配 url 的结尾。如果不$存在,则在“正则表达式”匹配之后。根本没有星号。哦,login_check 应该是安全的

access_control:
    - { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }  
    - { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: IS_AUTHENTICATED_FULLY }
于 2013-05-03T18:26:15.917 回答
2

问题是您在最后一行缺少一个句点:

      - { path: /*, role: IS_AUTHENTICATED_FULLY }
              ^^^^^

/*表示零个或多个斜杠 (/) .. 它应该/.*表示后面跟一个斜杠的任何内容

正确的输入应该是这样的:

      - { path: /.*, role: IS_AUTHENTICATED_FULLY }
于 2013-05-03T11:34:17.173 回答