Symfony2 / FOSUserBundle - проблемы маршрутизации с несколькими пакетами
Похожий наэтот проблема, мне нужен отдельный логин как для админа, так и для внешнего интерфейса моего сайта. Администратор на самом деле отдельный пакет, расположенный в.vendors
Прямо сейчас моя маршрутизация выглядит так:
приложение / Config / routing.yml:
AcmeSiteBundle:
resource: "@SiteBundle/Resources/config/routing.yml"
prefix: /
AcmeAdminBundle:
resource: "@AdminBundle/Resources/config/routing.yml"
prefix: /admin/
Обе связки Отдельные файлы routing.yml имеют:
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_security_login:
pattern: /login
defaults: { _controller: FOSUserBundle:Security:login }
fos_user_security_check:
pattern: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
fos_user_security_logout:
pattern: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
И мои брандмауэры в security.yml:
firewalls:
main:
context: site
pattern: ^/admin/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /admin/login
check_path: /admin/login_check
logout:
path: /admin/logout
anonymous: true
frontend:
context: site
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
logout:
path: /logout
anonymous: true
Проблема в том, что передний конецs автоматически сгенерированные ссылки входа в систему указывают на/admin/login
а не просто/login
Я не хочу, чтобы это случилось.
Итак, как я могу сделать это с помощью/admin/*
ссылки, когда ям, но только/
ссылки, когда ям на переднем конце? Мне нужно, чтобы их контексты были связаны, так как люди, вошедшие в систему на стороне администратора, должны оставаться в системе на входе.
РЕДАКТИРОВАТЬ: я переименовал мои маршруты следующим образом:
SiteBundle»s routing.yml (как и прежде):
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_security_login:
pattern: /login
defaults: { _controller: FOSUserBundle:Security:login }
fos_user_security_check:
pattern: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
fos_user_security_logout:
pattern: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
AdminBundle»s routing.yml:
_admin_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
_admin_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
_admin_user_security_login:
pattern: /login
defaults: { _controller: FOSUserBundle:Security:login }
_admin_user_security_check:
pattern: /login_check
defaults: { _controller: FOSUserBundle:Security:check }
_admin_user_security_logout:
pattern: /logout
defaults: { _controller: FOSUserBundle:Security:logout }
$ app/console router:debug
показывает:
fos_user_registration_register ANY ANY ANY /register/
fos_user_registration_check_email GET ANY ANY /register/check-email
fos_user_registration_confirm GET ANY ANY /register/confirm/{token}
fos_user_registration_confirmed GET ANY ANY /register/confirmed
fos_user_security_login ANY ANY ANY /admin/login
fos_user_security_check ANY ANY ANY /admin/login_check
fos_user_security_logout ANY ANY ANY /admin/logout
fos_user_profile_show GET ANY ANY /admin/profile/
fos_user_profile_edit ANY ANY ANY /admin/profile/edit
_admin_user_security_login ANY ANY ANY /admin/login
_admin_user_security_check ANY ANY ANY /admin/login_check
_admin_user_security_logout ANY ANY ANY /admin/logout
Как видите, единственный правильный маршрут - это регистрация пользователей, и этотолько потому, чторасположенпросто в SiteBundle 's routing.yml.