2016-12-07 6 views
0

У меня есть проект Symfony3, где я хочу полностью разделить пакеты администрирования Sonata от основного приложения. Основное приложение и пользователи сонаты - это разные объекты, которые никогда не пересекаются. Также все настройки безопасности независимы и различны. Кроме того, в будущем будет еще одна подсистема администрирования - полностью отличная от текущей для другого аспекта приложения.Как использовать различные файлы security.yml/параметры безопасности?

Я думаю о различных средах или о переопределении ядра (по методам this) и должен знать, как указать параметры безопасности для каждой среды (если это правильный подход и не взорвать фреймворк) или сделать его доступным путем переопределения ядра. Или ... любой подход, который вы знаете, для этого.

Моя версия Symfony 3.1.

ответ

2

Вы можете создать новую среду, в дополнение к существующим prod, dev и test из них, как описано в документации How to Master and Create new Environments. Это даст вам доступ к новому файлу конфигурации (config_[your_new_environment].yml), который, в свою очередь, может загрузить другой файл security.yml в операторе imports и переопределить значения по умолчанию.

Пример:

// config_sonata.yml 

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

В вашем случае, хотя, я бы сначала исследовать, используя различные межсетевые экраны как часть основного security.yml файла. Если URL-адреса, которые вы хотите защитить в разных приложениях, не перекрываются, вы можете просто add more firewalls и user providers. Это должно позволить вам покрыть все ваши потребности и сохранить все в одном месте.

+0

Благодарим вас за ответ. На самом деле, я потерпел неудачу, что я пропустил операцию import security.yml в файле конфигурации и подумал, что она загружена по-разному. Поэтому я буду использовать один security.yml, когда это возможно, и кажется, что легко отделить их, если это будет необходимо. Я предполагаю, что использование различных параметров безопасности на окружающую среду является правильным и поддерживаемым подходом. Кстати, вы когда-нибудь настраивали проект с разными настройками безопасности? Есть ли проблемы с этим в вашем опыте? – Arkemlar

+0

Нет Мне никогда не приходилось использовать файлы безопасности для каждой среды. Поскольку у меня никогда нет совпадающих URL-адресов, все можно позаботиться в стандартном файле безопасности. Если бы это произошло, я думаю, что я бы создал разные приложения. И если бы был код, который будет использоваться между этими приложениями, я бы разместил его в комплекте. Я думаю, что основная проблема с несколькими средами заключается в том, что она не очень стандартная. Вы знаете, почему вы это сделали, но не будет очевидным, чтобы новый разработчик прыгнул на проект по дороге. – PapyDanone

+0

Ну, я надеюсь, что это сработает. Разделение окружения имеет очевидную причину, например, загрузку пакетов сонаты в ядре только для раздела администратора, а также сложные конфигурации и параметры безопасности, необходимые для обработки двух админ-серверов и основного приложения. – Arkemlar