我无法让安全按照我想要的方式工作。
我希望管理部分受到保护,因此只有具有ROLE_ADMIN的人才能访问它。这很好用。但是,我希望我的未受保护/公共区域能够区分ROLE_ADMIN和IS_AUTHENTICATED_ANONYMOUSLY。
我不能让它工作。在我登录到管理部分后。我可以在工具栏中看到我已通过身份验证并拥有ROLE_ADMIN,但是一旦我回到网站的公共部分,它就会变成匿名身份验证。
这是我目前拥有的安全设置:
jms_security_extra:
secure_all_services: false
expressions: true
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
in_memory:
memory:
users:
myusername: { password: mypassword, roles: [ 'ROLE_ADMIN' ] }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login_area:
pattern: ^/login$
anonymous: ~
secured_area:
pattern: ^/admin|^/login_check$|^/logout$
form_login: ~
logout: ~
public_area:
pattern: ^/
anonymous: ~
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: [ROLE_ADMIN, IS_AUTHENTICATED_ANONYMOUSLY] }
如您所见,我尝试将ROLE_ADMIN和IS_AUTHENTICATED_ANONYMOUSLY角色添加到访问控制中的 '^/' 路径,但它不会改变任何内容。
我搜索了 Symfony2 book 和 Cookbook 条目,但没有找到任何可以帮助我解决这个问题的东西。