Как мы можем установить авторизацию для целой области в ASP.NET MVC?

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

Править: Я сожалею, я должен для упоминания этого прежде. Я использую пользовательский AuthorizedAttribute, полученный из AuthorizeAttribute.

53
задан Jon Seigel 2 April 2010 в 19:43
поделиться

3 ответа

Безопасность на основе Web.config почти никогда не должна использоваться в приложении MVC. Причина этого в том, что несколько URL-адресов потенциально могут попасть в контроллер, и установка этих проверок в Web.config неизменно что-то упускает. Помните - контроллеры не связаны с областями, маршруты связаны с областями. Фабрика контроллеров MVC с радостью обслуживает контроллеры из папки Areas / для запросов, не относящихся к области, если нет конфликта.

Например, используя структуру проекта по умолчанию, добавив область администратора с AdminDefaultController, вы можете задействовать этот контроллер через / Admin / AdminDefault / Index и / AdminDefault / Index.

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

53
ответ дан 7 November 2019 в 08:29
поделиться

Если весь ваш код администратора находится в одном контроллере, добавьте авторизацию весь класс.

[Authorize]
public class AdminController : Controller
{
     .......
}
13
ответ дан 7 November 2019 в 08:29
поделиться

.. очень грубо, я думаю, вам нужно что-то вроде этого?

Быстрое и грязное управление ролями

[Authorize(Roles = "Admins")]
public ActionResult Register()
{
  ViewData["roleName"] = new SelectList(Roles.GetAllRoles(), "roleName");
  ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
  return View();
}
-5
ответ дан 7 November 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: