如何在security.yaml中通过路由名称动态指定路由?

时间:2019-05-20 15:42:11

标签: php symfony routing symfony4

我使用Symfony4。我想通过Test1

中声明的路由名称指定登录页面URL路由。

现在,我的routes.yaml中有以下几行:

security.yaml

在我的access_control: - { path: ^/login, allow_if: 'is_anonymous()'} - { path: ^/, roles: ROLE_USER} 中,我有这个:

routes.yaml

我要引用的路由名称为“登录”

1 个答案:

答案 0 :(得分:2)

如何使用环境变量?

.env.dev文件(也用于测试和制作)

LOGIN_PATH="/login"

security.yaml文件

access_control:
    - { path: '^%env(LOGIN_PATH)%', allow_if: 'is_anonymous()'}
    - { path: ^/, roles: ROLE_USER}

routes.yaml文件:

login:
    path: '%env(LOGIN_PATH)%'
    controller: App\Controller\SecurityController::login

不知道它是否可以工作,但是应该可以工作。

参考:https://symfony.com/doc/current/configuration/environment_variables.html#environment-variable-processors

否则,似乎您无法在security.yaml文件中引用路由配置。要自己测试,请输入:

var_dump($this->parameters);

vendor\symfony\dependency-injection\ParameterBag\ParameterBag.php line 71方法开头的get($name)内,您可以在运行时看到已定义的参数:

php bin/console config:dump-reference security

命令。而且似乎在parameterbag中没有定义与已定义路由相关的参数。