Razor Konvence autorizace stránek v ASP.NET Core
Jedním zezpůsobůch Razor Tyto konvence umožňují autorizovat uživatele a umožnit 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žívají autorizační filtry pro řízení přístupu.
Zobrazení nebo stažení ukázkového kódu (postup stažení)
Ukázková aplikace používá ověřování bez ASP.NET Core Identity.cookie Koncepty a příklady uvedené v tomto tématu platí stejně pro aplikace, které používají ASP.NET Core Identity. Pokud chcete použít ASP.NET Core Identity, postupujte podle pokynů v úvodu k Identity ASP.NET Core.
Vyžadovat autorizaci pro přístup ke stránce
AuthorizePage Pomocí konvence přidejte AuthorizeFilter na stránku na zadanou cestu:
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 modulu zobrazení, což je Razor kořenová relativní cesta stránky bez přípony a obsahuje pouze lomítka.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Poznámka
Lze AuthorizeFilter použít na třídu modelu stránky s atributem [Authorize]
filtru. Další informace naleznete v tématu Autorizovat atribut filtru.
Vyžadování autorizace pro přístup ke složce stránek
AuthorizeFolder Konvence slouží k přidání AuthorizeFilter na všechny stránky 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 modulu zobrazení, což je Razor kořenová relativní cesta stránky.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Vyžadovat autorizaci pro přístup ke stránce oblasti
AuthorizeAreaPage Pomocí konvence přidejte AuthorizeFilter stránku oblasti na zadané cestě:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Název stránky je cesta k souboru bez přípony vzhledem ke kořenovému adresáři stránek pro zadanou oblast. Například název stránky souboru Areas/Identity/Pages/Manage/Accounts.cshtml
je /Manage/Accounts.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Vyžadovat autorizaci pro přístup ke složce oblastí
AuthorizeAreaFolder Pomocí konvence 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 ke kořenovému adresáři stránek pro zadanou oblast. Například cesta ke složce pro soubory v části Oblasti//IdentityStránky/Spravovat/ je /Manage.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizeAreaFolder:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Povolit anonymní přístup ke stránce
AllowAnonymousToPage Pomocí konvence přidejte AllowAnonymousFilter na stránku na zadanou cestu:
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 modulu zobrazení, což je Razor kořenová relativní cesta stránky bez přípony a obsahuje pouze lomítka.
Povolit anonymní přístup ke složce stránek
AllowAnonymousToFolder Konvence slouží k přidání AllowAnonymousFilter na všechny stránky 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 modulu zobrazení, což je Razor kořenová relativní cesta stránky.
Poznámka ke kombinování autorizovaného a anonymního přístupu
Je platné zadat, že složka stránek vyžaduje autorizaci, a pak zadat, že stránka v této složce umožňuje anonymní přístup:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Opak 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")
Vyžadování autorizace na soukromé stránce se nezdaří. Pokud se na AllowAnonymousFilterAuthorizeFilter stránku použije a použije, AllowAnonymousFilter bude mít přednost a řídí přístup.
Další prostředky
Jedním zezpůsobůch Razor Tyto konvence umožňují autorizovat uživatele a umožnit 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žívají autorizační filtry pro řízení přístupu.
Zobrazení nebo stažení ukázkového kódu (postup stažení)
Ukázková aplikace používá ověřování bez ASP.NET Core Identity.cookie Koncepty a příklady uvedené v tomto tématu platí stejně pro aplikace, které používají ASP.NET Core Identity. Pokud chcete použít ASP.NET Core Identity, postupujte podle pokynů v úvodu k Identity ASP.NET Core.
Vyžadovat autorizaci pro přístup ke stránce
AuthorizePage Pomocí konvence AddRazorPagesOptions přidejte na stránku na zadanou AuthorizeFilter cestu:
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 modulu zobrazení, což je Razor kořenová relativní cesta stránky bez přípony a obsahuje pouze lomítka.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizePage:
options.Conventions.AuthorizePage("/Contact", "AtLeast21");
Poznámka
Lze AuthorizeFilter použít na třídu modelu stránky s atributem [Authorize]
filtru. Další informace naleznete v tématu Autorizovat atribut filtru.
Vyžadování autorizace pro přístup ke složce stránek
AuthorizeFolder Konvence použijte k AddRazorPagesOptions přidání AuthorizeFilter na všechny stránky 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 modulu zobrazení, což je Razor kořenová relativní cesta stránky.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizeFolder:
options.Conventions.AuthorizeFolder("/Private", "AtLeast21");
Vyžadovat autorizaci pro přístup ke stránce oblasti
AuthorizeAreaPage Konvence použijte k AddRazorPagesOptions přidání AuthorizeFilter stránky oblasti na zadané cestě:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");
Název stránky je cesta k souboru bez přípony vzhledem ke kořenovému adresáři stránek pro zadanou oblast. Například název stránky souboru Areas/Identity/Pages/Manage/Accounts.cshtml
je /Manage/Accounts.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizeAreaPage:
options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");
Vyžadovat autorizaci pro přístup ke složce oblastí
AuthorizeAreaFolder Konvence použijte k AddRazorPagesOptions přidání 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 ke kořenovému adresáři stránek pro zadanou oblast. Například cesta ke složce pro soubory v části Oblasti//IdentityStránky/Spravovat/ je /Manage.
Pokud chcete zadat zásadu autorizace, použijte přetížení AuthorizeAreaFolder:
options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");
Povolit anonymní přístup ke stránce
AllowAnonymousToPage Konvence použijte k AddRazorPagesOptions přidání AllowAnonymousFilter stránky na zadanou cestu:
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 modulu zobrazení, což je Razor kořenová relativní cesta stránky bez přípony a obsahuje pouze lomítka.
Povolit anonymní přístup ke složce stránek
AllowAnonymousToFolder Konvence použijte k AddRazorPagesOptions přidání AllowAnonymousFilter na všechny stránky 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 modulu zobrazení, což je Razor kořenová relativní cesta stránky.
Poznámka ke kombinování autorizovaného a anonymního přístupu
Je platné zadat, že složka stránek, které vyžadují autorizaci, a než určí, že stránka v této složce umožňuje anonymní přístup:
// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")
Opak 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")
Vyžadování autorizace na soukromé stránce se nezdaří. Pokud se na AllowAnonymousFilterAuthorizeFilter stránku použije a použije, AllowAnonymousFilter bude mít přednost a řídí přístup.
Další prostředky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro