ответа Келси находится прямо на отметке, но я хотел бы добавить что-то к обсуждению. Другой вариант заключается в том, что на самом деле не существует маршрутов «admin» вообще, но вместо этого требуются сеансы, прошедшие проверку подлинности администратора, для фактического доступа к ограниченным URL-адресам.
Это часто бывает, как это делается в «традиционных» приложениях RESTful. Контроллер представляет тип используемого вами ресурса, действие - это глагол, а идентификатор - уникальный идентификатор для определенного члена этого ресурса.
Другими словами, вместо того, чтобы:
/content/list (for normal users)
/admin/content/add (for admins)
Вы бы
/content/list (for everyone)
/content/add (for admin, but must be authenticated to work)
Добавление/администратор/в URL на самом деле не добавлять ПРЕИМУЩЕСТВА (за исключением, возможно, что вы можете написать ваша логика обеспечения только одним правилом против чего-либо под/admin), но компромисс - более сложные маршруты и нарушение стандартного RESTful. Нарушение стандартных правил само по себе не является плохим, но вы должны учитывать, что они являются стандартными по какой-либо причине, и если у вас нет особых преимуществ для их устранения, вы можете подумать о том, чтобы придерживаться их.
Следует отметить, что в обоих стилях URL необходимо аутентифицировать пользователя, иначе любой может его использовать.
В ASP.NET MVC вы можете ограничить доступ к действиям (или даже целым контроллерам) на основе уровня пользователя с помощью ActionFilters. Украшая ваши действия только администратором с помощью этих фильтров, вы можете гарантировать, что только аутентифицированные административные пользователи могут их использовать.
Прочтите Scott Gu's запись в блоге или Rob Connery's post для получения дополнительной информации.
Использование вещей делает другие контроллеры слишком доступными с помощью префикса 'admin /'. Вы можете посетить свой сайт/дом через свой сайт/admin/Home. –