2017-07-02 8 views
2

私はFOSUserBundleを使用しています。すべてのルートに '/ account'を付加したいだけです。 私はFOSUserBundleから継承UserBundle持っている:私が試したSymfony3.3ルートへのリダイレクトで定義されたパスが使用されない

#UserBundle/config/routing.yml 
fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 
    prefix: /user 

:私のバンドルで

# app/config/routing.yml 
user: 
    resource: "@UserBundle/Resources/config/routing.yml" 
    prefix: /account 

と輸入FOSルート:

<?php 
//UserBundle.php 

namespace UserBundle; 

use Symfony\Component\HttpKernel\Bundle\Bundle; 

class UserBundle extends Bundle 
{ 
    public function getParent() 
    { 
     return 'FOSUserBundle'; 
    } 
} 

は私のルートで接頭辞を持つこのコントローラを定義しますファイルによってファイルを上書きし、すべてのルートを1つずつ、XML(親ファイルを上書きするため)またはyml経由でオーバーライドします。私はいつものルートが明確に定義されている(ビン/コンソールデバッグの出力:ルート--show-コントローラ):

fos_user_security_login    GET|POST ANY  ANY /account/login        FOSUserBundle:Security:login       
    fos_user_security_check    POST  ANY  ANY /account/login_check      FOSUserBundle:Security:check       
    fos_user_security_logout   GET|POST ANY  ANY /account/logout       FOSUserBundle:Security:logout       
    fos_user_profile_show    GET  ANY  ANY /account/profile/       FOSUserBundle:Profile:show        
    fos_user_profile_edit    GET|POST ANY  ANY /account/profile/edit      FOSUserBundle:Profile:edit        
    fos_user_registration_register  GET|POST ANY  ANY /account/register/       FOSUserBundle:Registration:register     
    fos_user_registration_check_email GET  ANY  ANY /account/register/check-email    FOSUserBundle:Registration:checkEmail     
    fos_user_registration_confirm  GET  ANY  ANY /account/register/confirm/{token}   FOSUserBundle:Registration:confirm      
    fos_user_registration_confirmed  GET  ANY  ANY /account/register/confirmed    FOSUserBundle:Registration:confirmed     
    fos_user_resetting_request   GET  ANY  ANY /account/resetting/request     FOSUserBundle:Resetting:request      
    fos_user_resetting_send_email  POST  ANY  ANY /account/resetting/send-email    FOSUserBundle:Resetting:sendEmail      
    fos_user_resetting_check_email  GET  ANY  ANY /account/resetting/check-email    FOSUserBundle:Resetting:checkEmail      
    fos_user_resetting_reset   GET|POST ANY  ANY /account/resetting/reset/{token}   FOSUserBundle:Resetting:reset       
    fos_user_change_password   GET|POST ANY  ANY /account/profile/change-password   FOSUserBundle:ChangePassword:changePassword 

しかし、私は「/ログイン」といないにリダイレクトしています「fos_user_security_login」ルートにリダイレクトする場合「/アカウント/ログイン」

あなたがどんな考えを持っている場合は、なぜ、私が知ってくださいだろう:P EDIT:ここ

firewalls: 
    # disables authentication for assets and the profiler, adapt it according to your needs 
    dev: 
     pattern: ^/(_(profiler|wdt)|css|images|js)/ 
     security: false 
    main: 
     pattern: ^/ 
     form_login: 
      check_path: /account/login_check 
      provider: fos_userbundle 
      csrf_token_generator: security.csrf.token_manager 
      # if you are using Symfony < 2.8, use the following config instead: 
      # csrf_provider: form.csrf_provider 
     logout: 
      path: /account/logout 
      target: /account/login 
     anonymous: true 

access_control: 
    # authorise to login and reset password for everyone 
    - { path: ^/account, role: IS_AUTHENTICATED_ANONYMOUSLY } 
+0

security.ymlを表示 –

+0

投稿の末尾に追加しました;) – Thiryn

+0

テンプレートオーバーライドは機能しますが、コントローラーのオーバーライドは動作しません – Thiryn

答えて

1

問題が見つかりました。私は適切な管理ができないためでした。 /にアクセスして/account/loginにリダイレクトしようとしましたが、/パスのACLが設定されていないため、自動的に/loginにリダイレクトされました。

0

おそらく問題のsecurity.ymlでファイアウォールとACLであります現在は

です
#UserBundle/config/routing.yml 
fos_user: 
    resource: "@FOSUserBundle/Resources/config/routing/all.xml" 
    prefix: /user 

デフォルトでは、定義しているログインルートを上書きしている可能性があります。あなたはすべてのルートをインポートする、またはあなたがFOSUserBundleから必要なだけのルートを追加した後

login: 
    path: /account/login 
    defaults: { _controller: FOSUserBundle:Security:login } 

login_check: 
    path: /account/login_check 
    defaults: { _controller: FOSUserBundle:Security:check } 

:ルーティングファイルでこれを追加してみてください。 FOSUserBundle/Resources/config/routing/all.xmlのベンダーディレクトリから入手できます。

関連する問題