Ähnlich wie this Problem, ich brauche ein separates Login für die Admin-und Front-End-Bundles meiner Website. Der Administrator ist eigentlich ein separates Paket, das sich in vendors
befindet.Symfony2/FOSUserBundle - Route Probleme mit mehreren Bundles
Im Moment sieht mein Routing wie:
app/config/routing.yml:
AcmeSiteBundle:
resource: "@SiteBundle/Resources/config/routing.yml"
prefix: /
AcmeAdminBundle:
resource: "@AdminBundle/Resources/config/routing.yml"
prefix: /admin/
beide der einzelnen routing.yml Dateien Bündel haben:
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 }
Und meine Firewalls in 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
Das Problem ist, dass die automatisch generierten Login-Links des Frontends auf /admin/login
und nicht nur auf /login
zeigen, was ich nicht möchte.
Also, wie kann ich die /admin/*
Links verwenden, wenn ich dort bin, aber nur die /
Links, wenn ich am Frontend bin? Ich muss ihre Kontexte verknüpft halten, da Personen, die bei der Admin-Seite angemeldet sind, am Frontend angemeldet bleiben sollten.
EDIT: umbenannt ich meine Routen wie die folgenden:
SiteBundle des routing.yml (gleich wie vorher):
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 des 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
zeigt:
Wie Sie sehen können, ist der einzige Weg, der richtige ist, ist für die Benutzerregistrierung, und das ist nur, weil es nur in SiteBundle der routing.yml gelegen ist.
Ich habe ein einzelnes Paket mit einem separaten Login für das Backend. Ich habe die loginAction von FOSUserBundle überschrieben. Diese neue Aktion rendert eine neue Vorlage für die Admin-Anmeldung. Meine Routen sind "/ admin/login" für das Backend und/login für das Frontend. Ich kann den Quellcode posten, wenn Sie das suchen. – stwe