Symfony4针对不同环境的不同安全配置



我在symfony 3.4中看到了很多这样做的说明,但我不知道如何在symfony 4中做到这一点。我有一个自定义环境,当开发人员将APP_ENV设置为该环境时,我希望使用不同的security.yaml。例如,我创建了一个配置环境"local",当我有config/packages/local/security.yaml和APP_ENV=local时,我的应用程序仍然默认为config/packings/security.yaml。我希望完全忽略config/packments/security.亚马l,而选择config/packles/local/security.yml。

这是我的prod/security.yaml:

security:
providers:
shibboleth:
id: AppSecurityUserShibbolethUserProvider
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');

最新更新