访问控制正则表达式symfony



我需要帮助配置我的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…等

我把它放在安全箱内了。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 }

有什么问题?

谢谢,)

acl的奇怪用法。Acl正则表达式要简单得多。^标记url的开头。$表示匹配url的结束。如果没有$存在,则所有在"regex"之后匹配。没有星号。哦,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 }

问题是最后一行缺少句号:

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

/*表示零个或多个斜杠(/)…。应该是/.*表示后面跟着斜杠的任何东西

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

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

最新更新