Как бы вы разработали функции посетителя и администратора в одном веб-приложении ASP.Net MVC? - PullRequest
5 голосов
/ 08 декабря 2008

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

  1. открытая сторона, которая предоставляет динамические данные посетителям и не администраторам, и
  2. сторона администратора, где администраторы могут обновлять или создавать динамические данные для обслуживания.

Это приложение было запущено в виде единого проекта веб-форм, разделенного на отдельные страницы и на безопасность папок web.config. Затем он вырос в отдельные проекты (администраторская часть MVC и веб-интерфейс). Позже мне пришлось перенести его туда, где оно есть сегодня, - одно веб-приложение с сочетанием MVC (администратор) и веб-форм (общедоступное) из-за проблем с развертыванием.

Теперь я планирую перенести его в один проект MVC. Я хотел бы, чтобы мои функции администрирования были в отчаянии от общедоступной стороны с помощью URL-адреса, такого как / Admin, и я не уверен, как это сделать. Я прочитал много тем о группировании контроллеров в модули, но пока не уверен, что это правильно.

  • Должен ли я просто создать функции администратора, встроенные в остальную часть общедоступного приложения, и определить, вошел ли пользователь в систему или нет?
  • Или я должен создать административные контроллеры, которые отделены от общедоступных контроллеров (EventAdminController vs CalendarController)?
  • Что сделали другие?

Предложения приветствуются, спасибо stackoverflow.


Да, я использую ASP.Net MVC Framework от Microsoft. Дэррил, ты хочешь поместить мои представления в папку администратора и защитить их с помощью web.config (для проверки безопасности и ролей) или поместить мои контроллеры в папку администратора?

Мои предположения заключались в том, что вы говорили о размещении контроллеров в папке администратора, скажем, под контроллерами. Это все равно будет означать, что HomeController в / Controllers отличается от HomeAdminController в / Controllers / Admin. В этом случае вы можете настроить конкретные маршруты для каждого, но я не вижу, как простое помещение контроллера в другую папку защитит их (если только не используется атрибут Authorize для действий).

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

Ответы [ 2 ]

2 голосов
/ 09 декабря 2008

У нас есть похожая проблема, когда мы создаем очень большое приложение ASP.NET MVC и для разделения функциональности по областям мы используем процесс, очень похожий на этот пост Фила Хаака . Создавая области, вы можете иметь уникальные имена контроллеров для каждой области, а не для всего приложения, вы можете гораздо проще разделить ваши модули и обмениваться аутентификацией и основными общими функциями.

1 голос
/ 08 декабря 2008

В проекте MVC, над которым я работаю, я положил все административные вещи в папку администратора. Чтобы увидеть папку администратора, вы должны быть аутентифицированы и в правильной роли. Мои контроллеры имеют тенденцию быть очень минимальными, большая часть логики находится на бизнес-уровне, который используют контроллеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...