Простая авторизация в ASP.NET Core MVC

Авторизация в ASP.NET Core управляется атрибутом [Authorize] и различными параметрами. В своей самой базовой форме применение атрибута [Authorize] к компоненту Razor, контроллеру, действию или Razor Page ограничивает доступ к этому компоненту для аутентифицированных пользователей.

В этой статье рассматриваются сценарии, относящиеся к приложениям MVC. Основную информацию по этой теме см. в разделе Простая авторизация в ASP.NET Core.

Атрибут

В следующем примере доступ ограничивается для пользователей, прошедших проверку подлинности, с помощью атрибута [Authorize]:

[Authorize]
public class AccountController : Controller
{
    public ActionResult Login() { ... }
    public ActionResult Logout() { ... }
}

Атрибут также поддерживает авторизацию на основе ролей или политик. Для авторизации на основе ролей используйте параметр. В следующем примере пользователь может получить доступ к странице, если он находится в роли Admin или Superuser:

[Authorize(Roles = "Admin, Superuser")]
public class OrderController : Controller
{
    ...
}

Для авторизации на основе политик используйте этот параметр. В следующем примере пользователь может получить доступ к странице, если он удовлетворяет требованиям политики авторизации: Over21политики авторизации.

[Authorize(Policy = "Over21")]
public class LicenseApplicationController : Controller
{
    ...
}

Если ни , ни не указаны, используется стандартная политика:

  • Пользователи, прошедшие проверку подлинности, авторизованы.
  • Неавторизованные (вышедшие из системы) пользователи не имеют разрешения.

Чтобы применить авторизацию к действию, а не к контроллеру, примените атрибут к действию. В следующем примере только прошедшие проверку подлинности пользователи могут активировать выход (вызвать метод):

public class AccountController : Controller
{
   public ActionResult Login() { ... }

   [Authorize]
   public ActionResult Logout() { ... }
}

Используйте атрибут [AllowAnonymous], чтобы разрешить доступ неаутентифицированным пользователям к отдельным действиям.

[AllowAnonymous]

Предупреждение

Для контроллеров MVC атрибут обходит инструкции авторизации. При объединении и одном или нескольких атрибутах атрибуты игнорируются. При применении на уровне контроллера:

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

Сведения о том, как требовать проверку подлинности для всех пользователей приложений, см. в статье Create приложение ASP.NET Core с данными пользователя, защищенными авторизацией.

Дополнительные ресурсы