我已经在 symfony 3.4 中看到了有关执行此操作的说明,但我不知道如何在 Symfony 4 中执行此操作。我有一个自定义环境,当开发人员将 APP_ENV 设置为该环境时,我想要不同的安全性要使用的 .yaml。举例来说,我创建了一个配置环境“本地”,当我有 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 4针对不同环境的不同安全配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50377846/