Php Symfony3.3重定向到路由不采用定义的路径

Php Symfony3.3重定向到路由不采用定义的路径,php,symfony,routing,fosuserbundle,symfony-3.3,Php,Symfony,Routing,Fosuserbundle,Symfony 3.3,我正在使用FOSUserBundle,我只想在它的所有路由前面加一个“/account”。 我有一个从FOSUserBundle继承的UserBundle: <?php //UserBundle.php namespace UserBundle; use Symfony\Component\HttpKernel\Bundle\Bundle; class UserBundle extends Bundle { public function getParent() {

我正在使用FOSUserBundle,我只想在它的所有路由前面加一个“/account”。 我有一个从FOSUserBundle继承的UserBundle:

<?php
//UserBundle.php

namespace UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class UserBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle';
    }
}
并在我的捆绑包中导入FOS路线:

#UserBundle/config/routing.yml
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
    prefix:   /user
我试图通过XML(覆盖父文件)或yml逐个覆盖文件和所有路由。我总是定义好路由(bin/console debug的输出:route--show controllers):

但当我重定向到“fos\u user\u security\u login”路由时,我被重定向到“/login”,而不是“/account/login”

如果你知道原因的话,请告诉我:p 编辑:这是security.yml中的防火墙和ACL

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 }
防火墙:
#禁用资产和探查器的身份验证,根据需要进行调整
开发人员:
模式:^/((探查器wdt)| css |图像| js)/
安全性:错误
主要内容:
模式:^/
表格(u)登入:
检查路径:/account/login\u检查
提供商:fos_用户包
csrf_令牌_生成器:security.csrf.token_管理器
#如果您使用的是Symfony<2.8,请改用以下配置:
#csrf\u提供程序:form.csrf\u提供程序
注销:
路径:/account/注销
目标:/account/登录
匿名:是的
访问控制:
#授权每个人登录并重置密码
-{path:^/account,role:IS_AUTHENTICATED_ANONYMOUSLY}

问题可能出在

#UserBundle/config/routing.yml
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
    prefix:   /user
它可能会用默认的登录路径覆盖您正在定义的登录路径。尝试在路由文件中添加以下内容:

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

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

导入所有管线后,或仅从FOSUserBundle添加所需的管线。您可以从供应商目录下的FOSUserBundle/Resources/config/routing/all.xml中获取它们。

我发现了问题,因为管理不善。
我试图访问
/
并将其重定向到
/account/login
,但我没有为
/
路径设置ACL,这意味着它会自动将我重定向到
/login
,给我的印象是,问题出在我的重定向上。

显示你的安全性。我在文章末尾添加了它;)模板覆盖起作用,但控制器覆盖似乎也不起作用
#UserBundle/config/routing.yml
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
    prefix:   /user
login:
    path: /account/login
    defaults: { _controller: FOSUserBundle:Security:login }

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