ASP.Net MVC: файловая структура, контроллеры и представления: как отделить администратора от остальных? - PullRequest
1 голос
/ 24 июня 2009

В основном, как я могу получить это:

sitename / Admin / Forum / Index против sitename / Forum / Index

Предыстория: Чтобы изучить MVC, я взялся за создание сырного приложения на форуме. Прежде, чем узнать что-либо о MVC, я просто воспользовался структурой директора по умолчанию, в основном это:

IMGAE!!1
(источник: byatool.com )

Теперь все эти контроллеры / представления имеют дело с админской стороной. Это было все прекрасно, пока я не начал работать над админской стороной. Теперь я не знаю, как перенести текущую настройку на сайт с правами администратора и без прав администратора. В основном, как я напечатал ранее:

sitename / Admin / Forum / Index - Для администратора

sitename / Forum / Index - Для постоянных пользователей

Как видите, имя форума и, следовательно, контроллер форума будут перекрываться, и MVC не очень нравится.

Я бы на самом деле не хотел бы иметь siteName / Forum / AdminIndex или siteName / ForumAdmin / Index, то есть ForumAdminController, потому что это выглядит странной работой и не будет против проверки пользователей на уровне администратора / уровня, чтобы запретить кому-либо входить во что-либо в этой «папке» (отсутствие лучшего слова), не будучи администратором. (Я предполагаю, что это будет сделано через маршрут)

Я действительно надеюсь, что есть способ осуществить это.

Ответы [ 3 ]

2 голосов
/ 24 июня 2009

Я думаю, что ваше админское или консольное веб-приложение всегда должно входить в собственный проект. Таким образом, вы можете иметь больший контроль, если когда-либо он будет развернут в настройках интрасети, если вам нужно скрыть определенные функции от вашего основного сайта и т. Д. Совмещение этих двух проблем на одном сайте редко оказывается хорошей идеей сайт растет и растет. Кроме того, сайт администратора редко получает выгоду от дизайна и т. Д. Основного приложения. Административные функции обычно выигрывают от более прямой компоновки, дополнительных экранов, большей безопасности и т. Д.

Подумайте о http://console.sitename.com/forum/index. Это гораздо понятнее и может иметь связи с вашим приложением на форуме. Проблемы здесь очень разделены.

1 голос
/ 23 декабря 2009

Прелесть MVC в том, что ваш URL не привязан к статическим ресурсам, как в ASP.NET Webforms. Имея это в виду, вы можете создать свой URL-адрес администратора так, чтобы он выглядел так, как вам нравится, и указывал на любой контроллер, который вам нравится, а не на создание сложной структуры каталогов. В прошлом размещение административных функций в подпапке было выгодно, поскольку вы могли легко заблокировать эту папку с помощью файлов конфигурации, но теперь это не нужно, когда представления отделены от URL.

Обычно я справляюсь с вещами, просто настраивая маршруты администратора так, как я хочу, и направляя их на административный контроллер. Контроллер затем блокируется только для пользователей с административной ролью с помощью декоратора Authorize в классе контроллера. Тогда нужно просто убедиться, что люди в правильных ролях. Мои URL-адреса обычно имеют эффект «Admin / ManageUsers». Возможно, в этом есть некоторые недостатки, но я до сих пор не сталкивался с какими-либо проблемами.

0 голосов
/ 23 декабря 2009

Я сделал обе альтернативы: Бит и Эндрю, и я думаю, что в этом случае я поместил админский материал в отдельную область или собрал все виды вместе в административную папку для лучшего обзора. С другой стороны, альтернатива Bit очень хороша, когда вы повторно используете представления как на форуме, так и на сайте администратора, но с немного различными функциями в зависимости от правил авторизации.

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