我的访问控制部分中有以下内容
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_SUPER_ADMIN }
- { path: ^/(.*), roles: ROLE_USER }
我认为这意味着我的基本网址和登录屏幕不会需要ROLE_USER,但所有其他路线都需要用户登录。但是这看起来并非如此所有路线似乎都是AUTHENTICATED ANONYMOUSLY
我确定有一些简单的东西我很遗憾但是非常感谢任何帮助!
答案 0 :(得分:1)
检查以下代码。我认为这就是你要找的东西。
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_USER }
- { path: ^/admin/, role: ROLE_ADMIN }
通过上面的代码,匿名用户可以访问登录和唯一的主路径。只有在用户有一些规则时,才能访问任何其他链接。但我相信你可能有一个注册链接和忘记密码链接。所有用户都应该可以访问注册和忘记密码链接。所以不要忘记将这些网址保留在第二行。
希望这会对你有所帮助。
答案 1 :(得分:0)
西洛
所有Access控件都自上而下运行。
Symfony从上到下逐个检查具有访问控制的当前路由。
如果匹配,则不要检查其余部分。
移动
.exe
作为第一个条件的顶部
答案 2 :(得分:0)
您的两行指向相同的网址格式,因此存在冲突:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/(.*), roles: ROLE_USER }
试试这个:
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_SUPER_ADMIN }
- { path: ^/, roles: ROLE_USER }