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

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

В этой статье используются BlazorRazor примеры компонентов и рассматриваются Blazor сценарии авторизации. Инструкции Razor по Pages и MVC см. в следующих ресурсах после прочтения этой статьи:

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

Атрибут [Authorize]

В Blazor приложениях укажите [Authorize] атрибут в верхней части Razor файла компонента (.razor). В следующем примере только прошедшие проверку подлинности пользователи могут access страницу:

@page "/"
@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]

You can only see this if you're signed in.

Это важно

Используйте [Authorize] атрибут только для @page компонентов, достигнутых через Blazor маршрутизатор. Авторизация выполняется только как аспект маршрутизации и не для дочерних компонентов, которые отображаются на странице. Чтобы авторизовать отображение определенных частей на странице, используйте вместо этого компонент AuthorizeView, который описан в разделе ASP.NET Core Blazor аутентификации и авторизации.

Атрибут[Authorize] также можно применить ко всем Razor компонентам Blazor приложения или подмножества Razor компонентов в папке с помощью файла импорта (_Imports.razor). Добавьте директиву @using для пространства имен Microsoft.AspNetCore.Authorization с директивой @attribute для атрибута [Authorize]:

@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]

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

@page "/"
@attribute [Authorize(Roles = "Admin, Superuser")]

<p>You can only see this if you're in the 'Admin' or 'Superuser' role.</p>

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

@page "/"
@attribute [Authorize(Policy = "Over21")]

<p>You can only see this if you satisfy the 'Over21' policy.</p>

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

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

Если пользователь не авторизован и если приложение не настраивает несанкционированное содержимое с Router помощью компонента, фреймворк автоматически отображает следующее резервное сообщение:

Not authorized.

Дополнительные сведения о проверке подлинности и авторизации Blazor см. в разделе ASP.NET Core Blazor аутентификации и авторизации.

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

@using Microsoft.AspNetCore.Authorization
@attribute [AllowAnonymous]

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

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

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