Symfony 2 - проблема межсетевого экрана и контроля доступа

У меня есть проводная проблема с компонентом безопасности symfony 2. Из-за того, что объект {{ app.user }} доступен только в защищенной области, я установил шаблон брандмауэра ^/. Теперь я хочу "незащищенные" некоторые страницы, такие как регистрация. Я пробовал это, используя access_control, но он не работает.

Вот мой security.yml

firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false login: pattern: ^/account/login$ security: false account_area: pattern: ^/ form_login: check_path: /account/login_check login_path: /account/login default_target_path: /account remember_me: key: blaBlubKey lifetime: 3600 path: / domain: ~ logout: path: /account/logout target: /
access_control: #works - { path: ^/backend, roles: ROLE_USER } #works not - { path: ^/registration, roles: IS_AUTHENTICATED_ANONYMOUSLY }

Спасибо заранее!

2 ответа

Используйте любую директиву в account_area:

account_area: pattern: ^/ anonymous: ~


Следует отметить, что лучше всего использовать только один брандмауэр с access_control для страницы входа. Зачем? Что бы вы сделали, если зарегистрированный пользователь попытается получить доступ к странице /login? Вы не сможете проверить контроллер, если он прошел проверку подлинности и перенаправил его, потому что пользователь будет аутентифицирован на вашем основном брандмауэре, но не на брандмауэре входа в систему, поскольку это отдельные системы безопасности.

Вот security.yml, который отлично работает для меня:

security: firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: true anonymous: ~ secured_area: pattern: ^/ anonymous: ~ form_login: login_path: /login check_path: /login_check always_use_default_target_path: true default_target_path: / logout: path: /logout target: / providers: main: entity: { class: Core\UserBundle\Entity\User, property: username } access_control: - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: ^/admin, roles: ROLE_SUPERADMIN } - { path: ^/user, roles: ROLE_USER } - { path: ^/, roles: IS_AUTHENTICATED_FULLY }

licensed under cc by-sa 3.0 with attribution.