2013-04-29 12 views
5

Ä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.

+0

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

Antwort

4

es herausgefunden:

Da die FOSUserBundle mit meinem Admin-Firewall in config.yml registriert wurde, hielt es auch auf seine Routen säumigen, nachdem ich sie umbenannt. Also, drehen sie zurück zu fos_ *, und umbenennen die Website Bündel Routen scheint es behoben zu haben.

+1

Wie sieht Ihre Datei config.yml aus (können Sie sie bitte auch posten)? Was für 'firewall_name' hast du für' fos_user' verwendet? – gondo

+1

ok ich denke, ich habe es gefunden, wonach ich gesucht habe. im Grunde sieht es so aus 'fos_user. firewall_name' wird nur zum Umleiten von Benutzern nach erfolgreicher Registrierung verwendet, wenn dies in FOSUser aktiviert ist. sicher sein, das richtig zu prüfen! – gondo

Verwandte Themen