Symfony4 针对不同环境的不同安全配置
Symfony4 different security configurations for different environments
我在 symfony 3.4 中看到了有关执行此操作的所有说明,但我不知道如何在 Symfony 4 中执行此操作。我有一个自定义环境,当开发人员将 APP_ENV 设置为该环境时环境 我想使用不同的 security.yaml。比如说我创建了一个配置环境 'local',当我有 config/packages/local/security.yaml 和 APP_ENV=local 时,我的应用程序仍然默认为 config/packages/security.yaml。我希望 config/packages/security.yaml 被完全忽略以支持 config/packages/local/security.yaml.
这是我的 prod/security.yaml
:
security:
providers:
shibboleth:
id: App\Security\User\ShibbolethUserProvider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
stateless: true
anonymous: ~
guard:
authenticators:
- app.shibboleth_authenticator
logout:
path: /logout
success_handler: app.shibboleth_authenticator
access_control:
- { path: ^/result, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
这是我的 local/security.yaml
:
security:
providers:
in_memory: { memory: ~ }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
在 Symfony4 中,您将配置拆分到环境文件夹中。你想做的大概是这样的:
.
└── config
└── packages
├── dev
├── local
│ └── security.yaml
├── prod
│ └── security.yaml
└── tests
由于您 Kernel.php
https://github.com/symfony/recipes/blob/34fc4212d838ac6c49a2b9892e2aa1d926149192/symfony/framework-bundle/3.3/src/Kernel.php#L48
中的这一行,它以这种方式工作
$loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');
我在 symfony 3.4 中看到了有关执行此操作的所有说明,但我不知道如何在 Symfony 4 中执行此操作。我有一个自定义环境,当开发人员将 APP_ENV 设置为该环境时环境 我想使用不同的 security.yaml。比如说我创建了一个配置环境 'local',当我有 config/packages/local/security.yaml 和 APP_ENV=local 时,我的应用程序仍然默认为 config/packages/security.yaml。我希望 config/packages/security.yaml 被完全忽略以支持 config/packages/local/security.yaml.
这是我的 prod/security.yaml
:
security:
providers:
shibboleth:
id: App\Security\User\ShibbolethUserProvider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
stateless: true
anonymous: ~
guard:
authenticators:
- app.shibboleth_authenticator
logout:
path: /logout
success_handler: app.shibboleth_authenticator
access_control:
- { path: ^/result, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
这是我的 local/security.yaml
:
security:
providers:
in_memory: { memory: ~ }
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
在 Symfony4 中,您将配置拆分到环境文件夹中。你想做的大概是这样的:
.
└── config
└── packages
├── dev
├── local
│ └── security.yaml
├── prod
│ └── security.yaml
└── tests
由于您 Kernel.php
https://github.com/symfony/recipes/blob/34fc4212d838ac6c49a2b9892e2aa1d926149192/symfony/framework-bundle/3.3/src/Kernel.php#L48
$loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob');