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.

Další materiály