RazorAutorizační konvence stránek v ASP.NET Core
Jedním ze způsobů, jak řídit přístup v Razor aplikaci Pages, je použít při spuštění konvence autorizace. Tyto konvence umožňují uživatelům ověřovat a povolit anonymním uživatelům přístup k jednotlivým stránkám nebo složkám stránek. Konvence popsané v tomto tématu automaticky použijí filtry pro autorizaci k řízení přístupu.
Zobrazit nebo stáhnout ukázkový kód (Jak stáhnout)
Ukázková aplikace používá cookie ověřování bez ASP.NET Core Identity . Koncepty a příklady uvedené v tomto tématu se vztahují i na aplikace, které používají ASP.NET Core Identity . Chcete-li použít ASP.NET Core Identity , postupujte podle pokynů v části Úvod do Identity ASP.NET Core .
Vyžadovat autorizaci pro přístup ke stránce
K AuthorizePage Přidání AuthorizeFilter na stránku na zadané cestě použijte konvenci:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Zadaná cesta je cesta k modulu zobrazení, která je Razor relativní cestou ke kořenu stránek bez přípony a obsahuje pouze lomítka.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Poznámka
AuthorizeFilterLze použít na třídu modelu stránky s [Authorize] atributem Filter. Další informace najdete v tématu autorizace atributu Filter.
Vyžadovat autorizaci pro přístup ke složce stránek
Pomocí AuthorizeFolder konvence přidejte AuthorizeFilter do všech stránek ve složce v zadané cestě:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Zadaná cesta je cesta k modulu zobrazení, což je Razor relativní cesta ke kořeni stránek.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Vyžadovat autorizaci pro přístup na stránku oblasti
Pomocí AuthorizeAreaPage konvence přidejte AuthorizeFilter na stránku oblasti v zadané cestě:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Název stránky je cesta k souboru bez přípony vzhledem k kořenovému adresáři stránek zadané oblasti. Například název stránky pro oblasti souboru/ Identity /Pages/Manage/accounts.cshtml je /Manage/Accounts.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Vyžadovat autorizaci pro přístup ke složce oblastí
K AuthorizeAreaFolder Přidání AuthorizeFilter do všech oblastí ve složce v zadané cestě použijte konvenci:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Cesta ke složce je cesta ke složce vzhledem k kořenovému adresáři stránek zadané oblasti. Například cesta ke složce pro soubory v oblasti oblasti/ Identity /Pages/Manage/ je /Manage.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizeAreaFolder:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Povolení anonymního přístupu na stránku
AllowAnonymousToPage AllowAnonymousFilter K přidání na stránku na zadané cestě použijte konvenci:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Zadaná cesta je cesta k modulu zobrazení, která je Razor relativní cestou ke kořenu stránek bez přípony a obsahuje pouze lomítka.
Povolení anonymního přístupu ke složce stránek
Pomocí AllowAnonymousToFolder konvence přidejte AllowAnonymousFilter do všech stránek ve složce v zadané cestě:
services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/Contact");
options.Conventions.AuthorizeFolder("/Private");
options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});
Zadaná cesta je cesta k modulu zobrazení, což je Razor relativní cesta ke kořeni stránek.
Poznámka o kombinování autorizovaných a anonymních přístupů
Je platný, pokud chcete určit, že složka stránek vyžaduje autorizaci, a pak určit, že stránka v této složce umožňuje anonymní přístup:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Zpětný chod ale není platný. Nemůžete deklarovat složku stránek pro anonymní přístup a pak zadat stránku v této složce, která vyžaduje autorizaci:
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
Požadavek na autorizaci na soukromé stránce se nezdařil. Pokud AllowAnonymousFilter AuthorizeFilter jsou a aplikovány na stránku, má AllowAnonymousFilter přednost a řídí přístup.
Další zdroje informací
Jedním ze způsobů, jak řídit přístup v Razor aplikaci Pages, je použít při spuštění konvence autorizace. Tyto konvence umožňují uživatelům ověřovat a povolit anonymním uživatelům přístup k jednotlivým stránkám nebo složkám stránek. Konvence popsané v tomto tématu automaticky použijí filtry pro autorizaci k řízení přístupu.
Zobrazit nebo stáhnout ukázkový kód (Jak stáhnout)
Ukázková aplikace používá cookie ověřování bez ASP.NET Core Identity . Koncepty a příklady uvedené v tomto tématu se vztahují i na aplikace, které používají ASP.NET Core Identity . Chcete-li použít ASP.NET Core Identity , postupujte podle pokynů v části Úvod do Identity ASP.NET Core .
Vyžadovat autorizaci pro přístup ke stránce
K AuthorizePage AddRazorPagesOptions Přidání AuthorizeFilter na stránku na zadané cestě použijte konvenci pomocí nástroje:
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);
Zadaná cesta je cesta k modulu zobrazení, která je Razor relativní cestou ke kořenu stránek bez přípony a obsahuje pouze lomítka.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Poznámka
AuthorizeFilterLze použít na třídu modelu stránky s [Authorize] atributem Filter. Další informace najdete v tématu autorizace atributu Filter.
Vyžadovat autorizaci pro přístup ke složce stránek
Použijte AuthorizeFolder konvenci pomocí nástroje AddRazorPagesOptions a přidejte AuthorizeFilter do všech stránek ve složce v zadané cestě:
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);
Zadaná cesta je cesta k modulu zobrazení, což je Razor relativní cesta ke kořeni stránek.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Vyžadovat autorizaci pro přístup na stránku oblasti
Použijte AuthorizeAreaPage konvenci pomocí nástroje AddRazorPagesOptions a přidejte AuthorizeFilter na stránku oblasti v zadané cestě:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Název stránky je cesta k souboru bez přípony vzhledem k kořenovému adresáři stránek zadané oblasti. Například název stránky pro oblasti souboru/ Identity /Pages/Manage/accounts.cshtml je /Manage/Accounts.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Vyžadovat autorizaci pro přístup ke složce oblastí
Použijte AuthorizeAreaFolder konvenci pomocí nástroje AddRazorPagesOptions a přidejte AuthorizeFilter do všech oblastí ve složce v zadané cestě:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");
Cesta ke složce je cesta ke složce vzhledem k kořenovému adresáři stránek zadané oblasti. Například cesta ke složce pro soubory v oblasti oblasti/ Identity /Pages/Manage/ je /Manage.
Chcete-li zadat zásady autorizace, použijte přetížení AuthorizeAreaFolder:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Povolení anonymního přístupu na stránku
K AllowAnonymousToPage AddRazorPagesOptions Přidání AllowAnonymousFilter na stránku na zadané cestě použijte konvenci pomocí nástroje:
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);
Zadaná cesta je cesta k modulu zobrazení, která je Razor relativní cestou ke kořenu stránek bez přípony a obsahuje pouze lomítka.
Povolení anonymního přístupu ke složce stránek
Použijte AllowAnonymousToFolder konvenci pomocí nástroje AddRazorPagesOptions a přidejte AllowAnonymousFilter do všech stránek ve složce v zadané cestě:
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);
Zadaná cesta je cesta k modulu zobrazení, což je Razor relativní cesta ke kořeni stránek.
Poznámka o kombinování autorizovaných a anonymních přístupů
Je platný, pokud chcete určit složku stránek, které vyžadují autorizaci, a než určit, že stránka v této složce povoluje anonymní přístup:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Zpětný chod ale není platný. Nemůžete deklarovat složku stránek pro anonymní přístup a pak zadat stránku v této složce, která vyžaduje autorizaci:
// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")
Požadavek na autorizaci na soukromé stránce se nezdařil. Pokud AllowAnonymousFilter AuthorizeFilter jsou a aplikovány na stránku, má AllowAnonymousFilter přednost a řídí přístup.