Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Одним из способов управления доступом в Razor приложении Pages является использование соглашений о авторизации при запуске. Эти соглашения позволяют авторизовать пользователей и разрешить анонимным пользователям доступ к отдельным страницам или папкам страниц. Соглашения, описанные в этом разделе, автоматически применяют фильтры авторизации для управления доступом.
Просмотр или скачивание примера кода (как скачать)
Пример приложения использует 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 корневым относительным путем Pages без расширения и содержит только косую черту.
Чтобы указать политику авторизации, используйте перегрузку метода AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Note
Можно AuthorizeFilter применить к классу модели страницы с атрибутом [Authorize] фильтра. Дополнительные сведения см. в разделе "Авторизовать атрибут фильтра".
Требовать авторизацию для доступа к папке страниц
Используйте соглашение AuthorizeFolder, чтобы добавить AuthorizeFilter ко всем страницам в папке по указанному пути:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Указанный путь — это путь модуля представления, который является корневым относительным путем Razor Pages.
Чтобы указать политику авторизации, используйте перегрузку AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Требовать авторизацию для доступа к странице области
Используйте конвенцию AuthorizeAreaPage, чтобы добавить AuthorizeFilter на страницу области по указанному пути:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Имя страницы — это путь к файлу без расширения относительно корневого каталога страниц для указанной области. Например, имя страницы файла Areas/Identity/Pages/Manage/Accounts.cshtml — /Manage/Accounts.
Чтобы указать политику авторизации, используйте перегрузку AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Требовать авторизацию для доступа к папке областей
Используйте соглашение AuthorizeAreaFolder, чтобы добавить AuthorizeFilter ко всем областям в папке по указанному пути.
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Путь к папке — это путь к папке относительно корневого каталога страниц для указанной области. Например, путь к папке для файлов в разделе "Области/Страницы"Identity/ "Управление" имеет значение /Manage.
Чтобы указать политику авторизации, используйте перегрузку метода AuthorizeAreaFolder:
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 корневым относительным путем Pages без расширения и содержит только косую черту.
Разрешить анонимный доступ к папке страниц
Используйте соглашение AllowAnonymousToFolder, чтобы добавить AllowAnonymousFilter ко всем страницам в папке по указанному пути:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Указанный путь — это путь модуля представления, который является корневым относительным путем Razor Pages.
Примечание о сочетании авторизованного и анонимного доступа
Допустимо указать, что для папки страниц требуется авторизация, а затем указать, что страница в этой папке разрешает анонимный доступ:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Обратное, однако, не является действительным. Невозможно объявить папку страниц для анонимного доступа, а затем указать страницу в этой папке, требующей авторизации:
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
Требование авторизации на частной странице завершается ошибкой. Когда и AllowAnonymousFilter, и AuthorizeFilter применяются к странице, AllowAnonymousFilter имеет приоритет и контролирует доступ.
Дополнительные ресурсы
Одним из способов управления доступом в Razor приложении Pages является использование соглашений о авторизации при запуске. Эти соглашения позволяют авторизовать пользователей и разрешить анонимным пользователям доступ к отдельным страницам или папкам страниц. Соглашения, описанные в этом разделе, автоматически применяют фильтры авторизации для управления доступом.
Просмотр или скачивание примера кода (как скачать)
Пример приложения использует 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 корневым относительным путем Pages без расширения и содержит только косую черту.
Чтобы указать политику авторизации, используйте перегрузку метода AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Note
Можно AuthorizeFilter применить к классу модели страницы с атрибутом [Authorize] фильтра. Дополнительные сведения см. в разделе "Авторизовать атрибут фильтра".
Требовать авторизацию для доступа к папке страниц
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 Pages.
Чтобы указать политику авторизации, используйте перегрузку AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Требовать авторизацию для доступа к странице области
AuthorizeAreaPage Используйте соглашение AddRazorPagesOptions, чтобы добавить AuthorizeFilter на страницу области по указанному пути:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Имя страницы — это путь к файлу без расширения относительно корневого каталога страниц для указанной области. Например, имя страницы файла Areas/Identity/Pages/Manage/Accounts.cshtml — /Manage/Accounts.
Чтобы указать политику авторизации, используйте перегрузку AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Требовать авторизацию для доступа к папке областей
Используйте соглашение AuthorizeAreaFolder через AddRazorPagesOptions, чтобы добавить AuthorizeFilter ко всем областям в папке по указанному пути:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Путь к папке — это путь к папке относительно корневого каталога страниц для указанной области. Например, путь к папке для файлов в разделе "Области/Страницы"Identity/ "Управление" имеет значение /Manage.
Чтобы указать политику авторизации, используйте перегрузку метода AuthorizeAreaFolder:
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 корневым относительным путем Pages без расширения и содержит только косую черту.
Разрешить анонимный доступ к папке страниц
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 Pages.
Примечание о сочетании авторизованного и анонимного доступа
Допустимо указать, что папка страниц требует авторизации, а затем указать, что страница в этой папке разрешает анонимный доступ.
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Обратное, однако, не является действительным. Невозможно объявить папку страниц для анонимного доступа, а затем указать страницу в этой папке, требующей авторизации:
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
Требование авторизации на частной странице завершается ошибкой. Когда и AllowAnonymousFilter, и AuthorizeFilter применяются к странице, AllowAnonymousFilter имеет приоритет и контролирует доступ.
Дополнительные ресурсы
ASP.NET Core