我需要帮助来配置我的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 }
有什么问题?
谢谢;)
答案 0 :(得分:4)
奇怪的使用acls。 acl正则表达式要简单得多。 ^
标记了网址的开头。 $
标记匹配网址的结尾。如果不存在$
,则在“正则表达式”匹配之后。完全没有星号。哦,应该保护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 }
答案 1 :(得分:1)
问题是你错过了最后一行的句号:
- { path: /*, role: IS_AUTHENTICATED_FULLY }
^^^^^
/*
表示零或多个斜杠(/)..。应为/.*
以指示后跟斜杠的任何内容
正确的输入应该是:
- { path: /.*, role: IS_AUTHENTICATED_FULLY }