Итак, я работал над небольшим веб-приложением (сайтом) для группы своих друзей и понял, что все должно измениться. Приложение имеет два лица
- открытая сторона, которая предоставляет динамические данные посетителям и не администраторам, и
- сторона администратора, где администраторы могут обновлять или создавать динамические данные для обслуживания.
Это приложение было запущено в виде единого проекта веб-форм, разделенного на отдельные страницы и на безопасность папок web.config. Затем он вырос в отдельные проекты (администраторская часть MVC и веб-интерфейс). Позже мне пришлось перенести его туда, где оно есть сегодня, - одно веб-приложение с сочетанием MVC (администратор) и веб-форм (общедоступное) из-за проблем с развертыванием.
Теперь я планирую перенести его в один проект MVC. Я хотел бы, чтобы мои функции администрирования были в отчаянии от общедоступной стороны с помощью URL-адреса, такого как / Admin, и я не уверен, как это сделать. Я прочитал много тем о группировании контроллеров в модули, но пока не уверен, что это правильно.
- Должен ли я просто создать функции администратора, встроенные в остальную часть общедоступного приложения, и определить, вошел ли пользователь в систему или нет?
- Или я должен создать административные контроллеры, которые отделены от общедоступных контроллеров (EventAdminController vs CalendarController)?
- Что сделали другие?
Предложения приветствуются, спасибо stackoverflow.
Да, я использую ASP.Net MVC Framework от Microsoft. Дэррил, ты хочешь поместить мои представления в папку администратора и защитить их с помощью web.config (для проверки безопасности и ролей) или поместить мои контроллеры в папку администратора?
Мои предположения заключались в том, что вы говорили о размещении контроллеров в папке администратора, скажем, под контроллерами. Это все равно будет означать, что HomeController в / Controllers отличается от HomeAdminController в / Controllers / Admin. В этом случае вы можете настроить конкретные маршруты для каждого, но я не вижу, как простое помещение контроллера в другую папку защитит их (если только не используется атрибут Authorize для действий).
Что касается размещения представлений в другой папке, я вижу, как это может работать в теории. Но не будет ли контроллер (теоретически без каких-либо атрибутов авторизации) работать до того момента, когда представление будет возвращено? Затем я бы ожидал перенаправления или ошибки. В любом случае, я бы не хотел выполнять свое действие контроллера, если вы не можете добраться до представления, и предпочел бы не выполнять предварительную проверку внутренних действий.