如何在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
不知道它是否会起作用,但它应该会起作用。
否则,您似乎无法在 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
命令。并且似乎没有在与定义的路由相关的参数包中定义参数。
我使用 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
不知道它是否会起作用,但它应该会起作用。
否则,您似乎无法在 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
命令。并且似乎没有在与定义的路由相关的参数包中定义参数。