如同this https://stackoverflow.com/q/9826370/399584问题,我需要为我的网站的管理和前端包单独登录。管理实际上是一个单独的包,位于vendors
.
现在,我的路由如下所示:
应用程序/配置/路由.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
问题是前端自动生成的登录链接指向/admin/login
而不仅仅是/login
,这不是我想要发生的事情。
那么,我怎样才能让它使用/admin/*
当我在那里时链接,但只是/
当我在前端时链接?我需要保持他们的上下文链接,因为登录管理端的人应该在前端保持登录状态。
编辑:我将我的路线重命名为:
SiteBundle的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的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
shows:
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
正如您所看到的,唯一正确的路线是用户注册,这只是因为它位于just在SiteBundle的routing.yml中。