我正在使用Symfony2进行项目,您必须登录才能看到该网站。我正在使用FOSUserBundle来创建成员区域。这是一个想法:如果匿名者来到网站,我会系统地重定向到登录页面。
这是我的security.yml:
providers:
fos_userbundle:
id: fos_user.user_manager
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
realm: "Acces reserve"
login:
pattern: ^/(login$|register|resetting)
anonymous: true
main:
pattern: ^/
form_login:
provider: fos_userbundle
remember_me: true
remember_me:
key: %secret%
anonymous: true
logout: true
access_control:
- { path: ^/backoffice, roles: ROLE_ADMIN }
- { path: ^/, roles: ROLE_USER }
我认为没有理由不去工作;这是现在的问题。我观察到我在/ login和其他区域没有记录相同的内容。例如,如果我自己登录,那么我就是名为“admin”的用户,网站上的角色为“ROLE_USER”但是如果我去/登录,我就会记录为“anon”而根本没有任何角色。 同样的问题但更无聊:当一个新用户注册时,他登录/登录页面而不登录其他页面......所以他总是重定向到/ login并且注销不会改变任何东西。 :/
你有什么想法吗?
谢谢!
P.S。 :是否可以手动清除Symfony2中的所有会话?因为我希望能够尝试其他东西但是在Chrome中我暂时无法做任何事情......我尝试清除浏览器缓存和cookie,清除Symfony缓存等等......没有任何变化,我是仍然在/ login页面上以“admin”身份登录-_-
答案 0 :(得分:1)
问题是你只为主防火墙指定了fos_userbundle提供程序,而不是登录和开发防火墙。所以fos_userbundle根本不用于/登录页面。
documentation表示您应该使用此配置:
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
remember_me: true
remember_me:
key: %secret%
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/backoffice, roles: ROLE_ADMIN }
- { path: ^/, roles: ROLE_USER }