У меня есть логин для интерфейса (который является необязательным) и другой логин для панели администратора, что является обязательным.Symfony: несколько контекстов брандмауэра - пользователь пересылается в неправильный контекст
Когда пользователь переходит к fe_login
, они могут войти в контекст frontend
. Это нормально!
Когда они обращаются к admin_login
, они должны иметь возможность входа в контекст admin
. Это не хорошо
Вопрос заключается в том, что, когда я иду в /admin
, я попадаю в fe_login
, когда я должен быть перенаправлен на admin_login
Вот мой security.yml
:
security:
encoders:
App\FrontendBundle\Controller\UserController:
algorithm: bcrypt
App\AdminBundle\Controller\UserController:
algorithm: bcrypt
App\Entity\User:
algorithm: bcrypt
providers:
administrators:
entity: { class: AppEntity:User, property: username }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
pattern: ^/admin
form_login:
login_path: admin_login
check_path: admin_auth
csrf_provider: form.csrf_provider
logout:
path: admin_logout
target: admin_login
frontend:
anonymous: ~
form_login:
login_path: fe_login
check_path: fe_auth
csrf_provider: form.csrf_provider
always_use_default_target_path: true
default_target_path: fe_landing
logout:
path: fe_logout
target: fe_landing
login:
pattern: ^/admin/login
anonymous: ~
default:
anonymous: ~
access_control:
- { path: ^/admin/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: [ROLE_ADMIN,ROLE_MANAGER,ROLE_DRIVER,ROLE_PARTNER] }
Любая идея, что я делаю неправильно?
Согласитесь с этим, начните с чистого прототипа и проверьте после каждой модификации, чтобы вы могли обнаружить ошибку. – COil
Я бы не рекомендовал использовать много брандмауэров. Нет необходимости иметь брандмауэр для каждой страницы входа. С гораздо меньшим количеством брандмауэров можно управлять гораздо проще, а также упростить устранение неполадок. – Sehael