Symfony 4针对不同环境的不同安全配置

标签 symfony symfony4 symfony-security

我已经在 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/

相关文章:

php - 如何以编程方式登录/验证用户?

php - 保护 symfony 3 中登录系统的安全

Symfony2 的 CSS 形式 : "Hello World" equivalent

php - Symfony2 表单验证器 - 刷新前比较旧值和新值

symfony - 如何在 Symfony 中获取所有翻译消息域

symfony - 如何在 DI 扩展类中加载、处理和使用 Yaml 配置文件中的自定义参数?

php - 生成 Symfony Controller 时找不到 "GET/Index"的路由

php - Symfony 4 在服务中使用 Doctrine

php - Symfony 4 扩展验证请求

ajax - symfony2 安全性 - 禁用登录路径并显示禁止