Razor Страницы соглашения об авторизации в ASP.NET Core

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

Просмотреть или скачать образец кода (как скачивать)

Пример приложения использует cookie проверку подлинности без ASP.NET Core Identity . Понятия и примеры, приведенные в этом разделе, применяются одинаково к приложениям, использующим ASP.NET Core Identity . Для использования ASP.NET Core Identity следуйте указаниям в статье Введение в Identity ASP.NET Core .

Требовать авторизацию для доступа к странице

Используйте AuthorizePage соглашение, чтобы добавить AuthorizeFilter на страницу по указанному пути:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительным путем для страниц без расширения и содержит только косую черту.

Чтобы указать политику авторизации, используйте перегрузку аусоризепаже:

options.Conventions.AuthorizePage("/Contact", "AtLeast21");

Примечание

AuthorizeFilterМожно применить к классу модели страницы с помощью [Authorize] атрибута Filter. Дополнительные сведения см. в разделе авторизация атрибута фильтра.

Требовать авторизацию для доступа к папке страниц

Используйте AuthorizeFolder соглашение, чтобы добавить AuthorizeFilter ко всем страницам в папке по указанному пути:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительном путем страниц.

Чтобы указать политику авторизации, используйте перегрузку аусоризефолдер:

options.Conventions.AuthorizeFolder("/Private", "AtLeast21");

Требовать авторизацию для доступа к странице области

Используйте AuthorizeAreaPage соглашение для добавления AuthorizeFilter на страницу области по указанному пути:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");

Имя страницы — это путь к файлу без расширения относительно корневого каталога страниц для указанной области. Например, имя страницы для файлов областей/ Identity /Пажес/манаже/аккаунтс.кштмл/манаже/аккаунтс.

Чтобы указать политику авторизации, используйте перегрузку аусоризеареапаже:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");

Требовать авторизацию для доступа к папке областей

Используйте AuthorizeAreaFolder соглашение, чтобы добавить AuthorizeFilter ко всем областям в папке по указанному пути:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");

Путь к папке — это путь к папке относительно корневого каталога страниц для указанной области. Например, путь к папке для файлов в разделе Areas/ Identity /Пажес/манаже//манаже.

Чтобы указать политику авторизации, используйте перегрузку аусоризеареафолдер:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");

Разрешить анонимный доступ к странице

Используйте AllowAnonymousToPage соглашение, чтобы добавить AllowAnonymousFilter к странице по указанному пути:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительным путем для страниц без расширения и содержит только косую черту.

Разрешить анонимный доступ к папке страниц

Используйте AllowAnonymousToFolder соглашение, чтобы добавить AllowAnonymousFilter ко всем страницам в папке по указанному пути:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительном путем страниц.

Примечание о комбинировании авторизации и анонимного доступа

Допустимо указать, что для папки страниц требуется авторизация, а затем указать, что страница в этой папке разрешает анонимный доступ:

// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")

Обратная, однако, недопустима. Нельзя объявить папку страниц для анонимного доступа, а затем указать страницу в этой папке, для которой требуется авторизация:

// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")

Не удается выполнить авторизацию на частной странице. Если к AllowAnonymousFilter AuthorizeFilter странице применяются и и, и, AllowAnonymousFilter Управление имеет приоритет и управляет доступом.

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

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

Просмотреть или скачать образец кода (как скачивать)

Пример приложения использует cookie проверку подлинности без ASP.NET Core Identity . Понятия и примеры, приведенные в этом разделе, применяются одинаково к приложениям, использующим ASP.NET Core Identity . Для использования ASP.NET Core Identity следуйте указаниям в статье Введение в Identity ASP.NET Core .

Требовать авторизацию для доступа к странице

Используйте AuthorizePage соглашение с, AddRazorPagesOptions чтобы добавить AuthorizeFilter к странице по указанному пути:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizePage("/Contact");
        options.Conventions.AuthorizeFolder("/Private");
        options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
        options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
    })
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительным путем для страниц без расширения и содержит только косую черту.

Чтобы указать политику авторизации, используйте перегрузку аусоризепаже:

options.Conventions.AuthorizePage("/Contact", "AtLeast21");

Примечание

AuthorizeFilterМожно применить к классу модели страницы с помощью [Authorize] атрибута Filter. Дополнительные сведения см. в разделе авторизация атрибута фильтра.

Требовать авторизацию для доступа к папке страниц

Используйте AuthorizeFolder соглашение с, AddRazorPagesOptions чтобы добавить AuthorizeFilter ко всем страницам в папке по указанному пути:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizePage("/Contact");
        options.Conventions.AuthorizeFolder("/Private");
        options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
        options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
    })
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительном путем страниц.

Чтобы указать политику авторизации, используйте перегрузку аусоризефолдер:

options.Conventions.AuthorizeFolder("/Private", "AtLeast21");

Требовать авторизацию для доступа к странице области

Используйте AuthorizeAreaPage соглашение с, AddRazorPagesOptions чтобы добавить AuthorizeFilter на страницу области по указанному пути:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");

Имя страницы — это путь к файлу без расширения относительно корневого каталога страниц для указанной области. Например, имя страницы для файлов областей/ Identity /Пажес/манаже/аккаунтс.кштмл/манаже/аккаунтс.

Чтобы указать политику авторизации, используйте перегрузку аусоризеареапаже:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");

Требовать авторизацию для доступа к папке областей

Используйте AuthorizeAreaFolder соглашение с, AddRazorPagesOptions чтобы добавить AuthorizeFilter ко всем областям в папке по указанному пути:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");

Путь к папке — это путь к папке относительно корневого каталога страниц для указанной области. Например, путь к папке для файлов в разделе Areas/ Identity /Пажес/манаже//манаже.

Чтобы указать политику авторизации, используйте перегрузку аусоризеареафолдер:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");

Разрешить анонимный доступ к странице

Используйте AllowAnonymousToPage соглашение с, AddRazorPagesOptions чтобы добавить AllowAnonymousFilter к странице по указанному пути:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizePage("/Contact");
        options.Conventions.AuthorizeFolder("/Private");
        options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
        options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
    })
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительным путем для страниц без расширения и содержит только косую черту.

Разрешить анонимный доступ к папке страниц

Используйте AllowAnonymousToFolder соглашение с, AddRazorPagesOptions чтобы добавить AllowAnonymousFilter ко всем страницам в папке по указанному пути:

services.AddMvc()
    .AddRazorPagesOptions(options =>
    {
        options.Conventions.AuthorizePage("/Contact");
        options.Conventions.AuthorizeFolder("/Private");
        options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
        options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
    })
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Указанный путь — это путь к обработчику представлений, который является Razor корневым относительном путем страниц.

Примечание о комбинировании авторизации и анонимного доступа

Допустимо указать, что папка страниц, для которых требуется авторизация, а не указывает, что страница в этой папке разрешает анонимный доступ:

// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")

Обратная, однако, недопустима. Нельзя объявить папку страниц для анонимного доступа, а затем указать страницу в этой папке, для которой требуется авторизация:

// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")

Не удается выполнить авторизацию на частной странице. Если к AllowAnonymousFilter AuthorizeFilter странице применяются и и, и, AllowAnonymousFilter Управление имеет приоритет и управляет доступом.

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