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