2013-04-29 7 views
5

thisと同じように、私のサイトの管理バンドルとフロントバンドルバンドルの両方に別のログインが必要です。管理者は実際にはvendorsにある別のバンドルです。Symfony2/FOSUserBundle - 複数のバンドルに関する問題

アプリ/設定/ 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 

問題は、フロントエンドの自動生成されたログインリンクが、/loginではなく/admin/loginを指していることです。これは私が起こりたいことではありません。

私はそこにいるときに/admin/*リンクを使用することができますが、フロントエンドでは/リンクのみを使用しますか?管理者側にログインしている人がフロントエンドにログインしたままでいるため、コンテキストをリンクしたままにしておく必要があります。


EDIT:

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は、

ご覧のとおり、正しい登録ルートは唯一のもので、サイトバンドルのrouting.ymlにはがちょうどとなっています。

+0

私は、バックエンド用に別のログインを持つ単一のバンドルを持っています。私はFOSUserBundleのloginActionを上書きしました。この新しいアクションは、adminログイン用の新しいテンプレートをレンダリングします。私のルートは、バックエンドの場合は "/ admin/login"、フロントエンドの場合は/ loginです。それがあなたが探しているものなら、私はソースコードを投稿することができます。 – stwe

答えて

4

はそれを考え出した:

をFOSUserBundleがconfig.ymlに私の管理ファイアウォールに登録されたので、それは私が彼らの名前を変更した後もその路線をデフォルト続けました。だから、それらをfos_ *に戻して、サイトのバンドルのルートの名前を変更したように見えます。

+1

あなたのconfig.ymlファイルはどのように見えますか?あなたは 'fos_user'に' firewall_name'を使ったのですか? – gondo

+1

私はそれが私が探していたものを見つけたと思います。基本的に 'fos_user 'のように見えます。ファイアウォール名は、FOSUserで有効になっている場合、登録が成功した後にユーザーをリダイレクトするために使用されます。これを正しくテストしてください! – gondo

関連する問題