[英]Symfony2 - Access control
I want to set access_control
for everything, but not for the pattern /login
(and maybe some more routes). 我想为所有内容设置access_control
,但不是为了模式/login
(可能还有更多的路由)。
So I set up the path for login first, with the role IS_AUTHENTICATED_ANONYMOUSLY
. 所以我首先设置登录路径,角色为IS_AUTHENTICATED_ANONYMOUSLY
。 Then I set up the path for everything, with the role IS_AUTHENTICATED_FULLY
. 然后我设置了一切的路径,角色为IS_AUTHENTICATED_FULLY
。
The problem is that login form is now generated twice. 问题是登录表单现在生成两次。 I see two login fields, two submit buttons, and so on. 我看到两个登录字段,两个提交按钮,依此类推。
If I remove the access_control rules I have no, and only set to one path like /blog/.*
and with role: IS_AUTHENTICATED_FULLY
, it works fine, the login form is like it should be. 如果我删除了access_control规则,我没有,只设置为一个路径,如/blog/.*
和角色: IS_AUTHENTICATED_FULLY
,它工作正常,登录表单应该是这样。
So my configuration of " you need to be authenticated everywhere except here " does not work. 所以我的配置“ 你需要在这里除了这里以外的地方进行身份验证 ”不起作用。
This is what I tried to do when login form is generated twice: 这是我在登录表单生成两次时尝试做的事情:
access_control:
- { path: /login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: /.*, role: IS_AUTHENTICATED_FULLY }
Does anyone have any good examples for how to set up such a rule? 有没有人有关于如何设置这样一条规则的好例子?
So I got the answer :) So if anyone should have this problem, you also have to let _wdt, and _profiler being accessed anonymously :) 所以我得到了答案:)所以,如果有人应该有这个问题,你还必须让_wdt和_profiler匿名访问:)
access_control: - { path: /_wdt/.*, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: /_profiler/.*, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: /login, role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: /.*, role: IS_AUTHENTICATED_FULLY }
Don't forget to add this firewall: 不要忘记添加此防火墙:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.