Подойдет ли отдельное приложение для администраторов сайта Symfony? - PullRequest
0 голосов
/ 24 июля 2011

Я строю веб-сайт на базе Symfony, в котором есть пользователи и администраторы. Обычно я позволяю им использовать одно и то же приложение и отображать разные страницы для администраторов, проверяя их разрешения (я использую плагин sfGuard).

Администраторы используют те же модули, что и другие пользователи, но мнения разные. Администраторы могут искать все пользовательские данные и видеть всех пользователей одновременно. Они также могут редактировать что угодно.

Но мне интересно, лучше ли использовать бэкэнд-приложение только для администраторов? Вот как это делает учебное пособие. Таким образом, администраторы могут перейти к этому бэкэнд-приложению, а не к тому, которое используют все остальные ....

Какими будут плюсы и минусы каждого подхода?

Спасибо.

Ответы [ 2 ]

1 голос
/ 24 июля 2011

Если вы не используете генератор администрирования бэкэнда, я бы оставил все в приложении внешнего интерфейса, так как я не вижу серьезных преимуществ в том, чтобы иметь отдельное приложение бэкэнда в этом случае.Вы можете разделить пользовательский интерфейс для обычных пользователей и администраторов во внешнем приложении точно так же, от их собственных страниц входа до представлений шаблонов в «режиме администратора» и т. Д. SfDoctrineGuard поставляется с группами и разрешениями, поэтому его легко настроить.Кроме того, вам не нужно дублировать настройки внешнего интерфейса в базовом приложении, чтобы все работало одинаково.

0 голосов
/ 25 июля 2011

Это решение является балансом. Лучший ответ зависит от того, КАК РАЗНЫЕ функциональные возможности и разрешения между двумя типами пользователей. Если ваш сайт очень сложный, вам будет легче писать, поддерживать и тестировать код в отдельных приложениях. Если есть только несколько небольших отличий, вы предпочитаете поддерживать простоту только одного приложения.

Например, в нашей системе у нас есть собственные системные администраторы, которым разрешено делать и видеть гораздо больше, чем клиентские «администраторы». Пользователи-пользователи имеют разные уровни разрешений, при этом их уровень администратора самый высокий. Однако даже те клиенты не могут получить доступ к любому нашему бэкэнду, который имеет многочисленные модули, которые они не могут видеть, и совершенно разные наборы форм. Мы даже запускаем эти приложения на разных виртуальных именах хостов, даже если они находятся в одном проекте Symfony.

Наличие отдельных приложений, подобных этому, позволяет вам легче убедиться в правильности защиты, не давая клиентам полностью работать с бэкэндом и всеми его модулями. У нас есть несколько модулей, которые похожи на бэкэнд и внешний интерфейс, но на стороне клиента должно быть гораздо больше пользовательских ограничений на то, какие записи и поля они могут просматривать / редактировать, чтобы они не попадали в данные других клиентов.

Если бы мы попытались смешать все эти ограничения клиентов с нашими супер-привилегированными возможностями, у нас был бы кошмар сложных условных выражений и запросов, и было бы слишком легко совершать ошибки и предоставлять клиентам доступ, к которому они не должны есть.

...