注销目标路径不会在silex防火墙中正确重定向

时间:2017-02-26 21:35:25

标签: php symfony silex

我有一个带有两个安全区域的防尘防火墙

'clientes'      =>  array(
            'pattern'   =>  '^/clients.*$',
            'anonymous' =>  true,
            'form'      =>  array(
                'login_path' => '/clients/login',
                'check_path' => '/clients/login_check',
                'default_target_path' => '/clients/admin',
                'always_use_default_target_path' => true,
                'username_parameter' => 'username',
                'password_parameter' => 'password',
                'csrf_parameter' => 'login_token',
                'failure_path' => '/clients/login',
            ),
            'logout'    =>  array(
                'logout_path' => '/clients/admin/logout',
                'target' => '/clients/login'
            ),
            'users' => $app->factory(function () use ($app) {
                return new Lib\Provider\ClientProvider($app);
            })
        ),
        'sistema'       =>  array(
            'pattern'   =>  '^/.*$',
            'anonymous' =>  true,
            'form'      =>  array(
                'login_path' => '/',
                'check_path' => '/login_check',
                'default_target_path' => '/dashboard',
                'always_use_default_target_path' => true,
                'username_parameter' => 'username',
                'password_parameter' => 'password',
                'csrf_parameter' => 'login_token',
                'failure_path' => '/',
            ),
            'logout'    =>  array(
                'logout_path' => '/logout',
                'target' => '/'
            ),
            'users' => $app->factory(function () use ($app) {
                return new Lib\Provider\UserProvider($app);
            })
        )
    ),
    'security.access_rules' => array(
        array('^/select-locale.*$', 'IS_AUTHENTICATED_ANONYMOUSLY'),
        array('^/recupera-password.*$', 'IS_AUTHENTICATED_ANONYMOUSLY'),
        array('^/dashboard', array('ROLE_ADMIN','ROLE_SISTEMA')),
        array('^/clients/login$', 'IS_AUTHENTICATED_ANONYMOUSLY'),
        array('^/clients/admin', array('ROLE_CLIENTE'))
    ),
    'security.role_hierarchy' => array(
        'ROLE_ADMIN_SUPER'    => array('ROLE_ADMIN','ROLE_SISTEMA','ROLE_CLIENTE'),
    )

两个防火墙都能正常工作,但在注销部分的目标参数中,无论哪种情况都不起作用,它总是重新解决我项目的根目录。

即使我使用任何url修改,target参数也总是转到项目的根目录。

在那里我读到了应该修改注销处理程序,但我不清楚它是如何配置的以及它应该在哪里完成

您能否提出一些建议,以便更改网址并正常工作?

此致

1 个答案:

答案 0 :(得分:3)

参数名称不正确。尝试将其更改为target_url

'logout'    =>  array(
    'logout_path' => '/clients/admin/logout',
    'target_url' => '/clients/login'
),