【问题标题】:How to use different security.yml files / security settings?如何使用不同的 security.yml 文件/安全设置?
【发布时间】:2016-12-07 19:45:46
【问题描述】:

我有 Symfony3 项目,我希望将 Sonata 管理包与主应用程序完全分开。主应用程序和奏鸣曲用户是永远不会交叉的不同实体。此外,所有安全设置都是独立且不同的。此外,将来还会有另一个管理子系统 - 与当前应用程序的另一个方面完全不同。

我考虑不同的环境或覆盖内核(thismethodics)并且需要知道如何指定每个环境的安全设置(如果它是正确的方法并且不会破坏框架)或通过覆盖内核使其可选择.或者...您知道的任何方法。

我的 Symfony 版本是 3.1。

【问题讨论】:

    标签: security configuration kernel symfony sonata


    【解决方案1】:

    除了现有的proddevtest 之外,您还可以创建新环境,如文档How to Master and Create new Environments 中所述。这将使您能够访问一个新的配置文件 (config_[your_new_environment].yml),这反过来又可以在 imports 语句中完全加载不同的 security.yml 文件并覆盖默认值。

    例子:

    // config_sonata.yml
    
    imports:
        - { resource: config.yml }
        - { resource: security_sonata.yml }
    

    不过,在您的情况下,我将首先调查使用不同的防火墙作为主要security.yml 文件的一部分。如果您希望在不同应用程序中保护的 URL 不重叠,您可以简单地使用 add more firewallsuser providers。这应该可以让您满足您的所有需求并将所有内容保存在一个地方。

    【讨论】:

    • 感谢您的回复。实际上,我错过了配置文件中的 import security.yml 语句并认为它是以不同方式加载的失败。因此,我将尽可能使用一个 security.yml,如果有必要,将它们分开似乎很容易。我假设在每个环境中使用不同的安全设置是正确且受支持的方法。顺便说一句,您是否曾经为项目配置过不同的安全设置?在您的经验中,这有什么问题吗?
    • 不,我从来不需要使用每个环境的安全文件。因为我从来没有重叠的 URL,所以一切都可以在标准安全文件中处理。如果它确实发生了,我想我会完全创建不同的应用程序。如果这些应用程序之间要共享代码,我会将它们全部放在一个包中。我认为多环境的主要问题是它不是很标准。您知道自己为什么这样做,但对于即将投入该项目的新开发人员来说,这并不明显。
    • 好吧,我希望它会起作用.. 环境分离有明显的原因,例如仅在内核中为管理部分加载奏鸣曲包,以及处理两个管理后端和主应用程序需要复杂的配置和安全设置。
    猜你喜欢
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2016-09-11
    相关资源
    最近更新 更多