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

How to specify route dynamicly by route name in security.yaml?

我使用 Symfony4。我想通过其路由名称指定登录页面 URL 路由,该路由名称在 routes.yaml

中声明

现在我的 security.yaml 中有这些行:

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

在我的 routes.yaml 我有这个:

login:
    path: /anyrouteiwant   
    controller: App\Controller\SecurityController::login

我要的是引用路由名'login'

使用环境变量如何?

.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);

inside vendor\symfony\dependency-injection\ParameterBag\ParameterBag.php line 71 就在get($name)方法的开头,当你运行:

时你可以看到定义的参数
php bin/console config:dump-reference security

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