RazorSeiten Autorisierungs Konventionen in ASP.net CoreRazor Pages authorization conventions in ASP.NET Core

Eine Möglichkeit, den Zugriff in ihrer Pages-APP zu steuern, Razor besteht darin, beim Start Autorisierungs Konventionen zu verwenden.One way to control access in your Razor Pages app is to use authorization conventions at startup. Diese Konventionen ermöglichen es Ihnen, Benutzer zu autorisieren und anonymen Benutzern den Zugriff auf einzelne Seiten oder Ordner Seiten zu gestatten.These conventions allow you to authorize users and allow anonymous users to access individual pages or folders of pages. In den in diesem Thema beschriebenen Konventionen werden automatisch Autorisierungs Filter angewendet, um den Zugriff zu steuern.The conventions described in this topic automatically apply authorization filters to control access.

Anzeigen oder Herunterladen von Beispielcode (Vorgehensweise zum Herunterladen)View or download sample code (how to download)

Die Beispiel-App verwendet die cookie Authentifizierung Identity ohne ASP.net Core .The sample app uses cookie authentication without ASP.NET Core Identity. Die Konzepte und Beispiele in diesem Thema gelten auch für apps, die ASP.net Core verwenden Identity .The concepts and examples shown in this topic apply equally to apps that use ASP.NET Core Identity. Um ASP.net Core zu verwenden Identity , befolgen Sie die Anweisungen unter Einführung in Identity ASP.net Core .To use ASP.NET Core Identity, follow the guidance in Einführung in Identity ASP.net Core.

Autorisierung für den Zugriff auf eine Seite erforderlichRequire authorization to access a page

Verwenden Sie die AuthorizePage Konvention, um AuthorizeFilter der Seite einen unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizePage convention to add an AuthorizeFilter to the page at the specified path:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Der angegebene Pfad ist der Ansichts-Engine-Pfad. dabei handelt es sich um den Razor relativen Pfad des Seiten Stamms ohne Erweiterung, der nur Schrägstriche enthält.The specified path is the View Engine path, which is the Razor Pages root relative path without an extension and containing only forward slashes.

Verwenden Sie eine Autorisierungs Richtlinie, wenn Sie eine AutorisierungsRichtlinie angeben möchten:To specify an authorization policy, use an AuthorizePage overload:

options.Conventions.AuthorizePage("/Contact", "AtLeast21");

Hinweis

Ein AuthorizeFilter kann auf eine Seiten Modell Klasse mit dem Filter- [Authorize] Attribut angewendet werden.An AuthorizeFilter can be applied to a page model class with the [Authorize] filter attribute. Weitere Informationen finden Sie unter Autorisieren eines Filter Attributs.For more information, see Authorize filter attribute.

Autorisierung für den Zugriff auf einen Ordner von Seiten erforderlichRequire authorization to access a folder of pages

Verwenden Sie die AuthorizeFolder Konvention, um AuthorizeFilter allen Seiten in einem Ordner unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizeFolder convention to add an AuthorizeFilter to all of the pages in a folder at the specified path:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Der angegebene Pfad ist der Pfad der Ansichts-Engine, der der relative Pfad des Seiten Stamms ist Razor .The specified path is the View Engine path, which is the Razor Pages root relative path.

Verwenden Sie zum Angeben einer Autorisierungs Richtlinieeine autorizefolder-Überladung:To specify an authorization policy, use an AuthorizeFolder overload:

options.Conventions.AuthorizeFolder("/Private", "AtLeast21");

Autorisierung für den Zugriff auf eine Bereichs Seite erforderlichRequire authorization to access an area page

Verwenden Sie die AuthorizeAreaPage Konvention, um AuthorizeFilter der Bereichs Seite einen unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizeAreaPage convention to add an AuthorizeFilter to the area page at the specified path:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");

Der Seiten Name ist der Pfad der Datei ohne Erweiterung relativ zum Seiten Stammverzeichnis für den angegebenen Bereich.The page name is the path of the file without an extension relative to the pages root directory for the specified area. Beispielsweise ist der Seiten Name für die Datei Bereiche/ Identity /pages/manage/accounts.cshtml /Manage/Accounts.For example, the page name for the file Areas/Identity/Pages/Manage/Accounts.cshtml is /Manage/Accounts.

Verwenden Sie eine Autorisierungs Richtlinie, wenn Sie eine AutorisierungsRichtlinie angeben möchten:To specify an authorization policy, use an AuthorizeAreaPage overload:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");

Autorisierung für den Zugriff auf einen Ordner von Bereichen erforderlichRequire authorization to access a folder of areas

Verwenden Sie die AuthorizeAreaFolder Konvention, um AuthorizeFilter allen Bereichen in einem Ordner unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizeAreaFolder convention to add an AuthorizeFilter to all of the areas in a folder at the specified path:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");

Der Ordner Pfad ist der Pfad des Ordners relativ zum Seiten Stammverzeichnis für den angegebenen Bereich.The folder path is the path of the folder relative to the pages root directory for the specified area. Beispielsweise ist der Ordner Pfad für die Dateien unter " Areas/ Identity /pages/Manage/ " /Manage.For example, the folder path for the files under Areas/Identity/Pages/Manage/ is /Manage.

Verwenden Sie eine Autorisierungs Richtlinie, wenn Sie eine AutorisierungsRichtlinie angeben möchten:To specify an authorization policy, use an AuthorizeAreaFolder overload:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");

Anonymen Zugriff auf eine Seite zulassenAllow anonymous access to a page

Verwenden Sie die AllowAnonymousToPage Konvention, um eine AllowAnonymousFilter Seite unter dem angegebenen Pfad zu einer Seite hinzuzufügen:Use the AllowAnonymousToPage convention to add an AllowAnonymousFilter to a page at the specified path:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Der angegebene Pfad ist der Ansichts-Engine-Pfad. dabei handelt es sich um den Razor relativen Pfad des Seiten Stamms ohne Erweiterung, der nur Schrägstriche enthält.The specified path is the View Engine path, which is the Razor Pages root relative path without an extension and containing only forward slashes.

Anonymen Zugriff auf einen Ordner von Seiten zulassenAllow anonymous access to a folder of pages

Verwenden Sie die AllowAnonymousToFolder Konvention, um AllowAnonymousFilter allen Seiten in einem Ordner unter dem angegebenen Pfad hinzuzufügen:Use the AllowAnonymousToFolder convention to add an AllowAnonymousFilter to all of the pages in a folder at the specified path:

services.AddRazorPages(options =>
{
    options.Conventions.AuthorizePage("/Contact");
    options.Conventions.AuthorizeFolder("/Private");
    options.Conventions.AllowAnonymousToPage("/Private/PublicPage");
    options.Conventions.AllowAnonymousToFolder("/Private/PublicPages");
});

Der angegebene Pfad ist der Pfad der Ansichts-Engine, der der relative Pfad des Seiten Stamms ist Razor .The specified path is the View Engine path, which is the Razor Pages root relative path.

Hinweis zum Kombinieren von autorisiertem und anonymem ZugriffNote on combining authorized and anonymous access

Es ist zulässig, anzugeben, dass für einen Ordner von Seiten eine Autorisierung erforderlich ist, und dann anzugeben, dass eine Seite in diesem Ordner anonymen Zugriff zulässt:It's valid to specify that a folder of pages requires authorization and then specify that a page within that folder allows anonymous access:

// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")

Das Gegenteil ist jedoch nicht gültig.The reverse, however, isn't valid. Sie können keinen Ordner von Seiten für den anonymen Zugriff deklarieren und dann eine Seite in diesem Ordner angeben, für die eine Autorisierung erforderlich ist:You can't declare a folder of pages for anonymous access and then specify a page within that folder that requires authorization:

// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")

Das Verlangen der Autorisierung auf der privaten Seite schlägt fehl.Requiring authorization on the Private page fails. Wenn sowohl als AllowAnonymousFilter auch AuthorizeFilter auf die Seite angewendet werden, hat AllowAnonymousFilter Vorrang und steuert den Zugriff.When both the AllowAnonymousFilter and AuthorizeFilter are applied to the page, the AllowAnonymousFilter takes precedence and controls access.

Weitere RessourcenAdditional resources

Eine Möglichkeit, den Zugriff in ihrer Pages-APP zu steuern, Razor besteht darin, beim Start Autorisierungs Konventionen zu verwenden.One way to control access in your Razor Pages app is to use authorization conventions at startup. Diese Konventionen ermöglichen es Ihnen, Benutzer zu autorisieren und anonymen Benutzern den Zugriff auf einzelne Seiten oder Ordner Seiten zu gestatten.These conventions allow you to authorize users and allow anonymous users to access individual pages or folders of pages. In den in diesem Thema beschriebenen Konventionen werden automatisch Autorisierungs Filter angewendet, um den Zugriff zu steuern.The conventions described in this topic automatically apply authorization filters to control access.

Anzeigen oder Herunterladen von Beispielcode (Vorgehensweise zum Herunterladen)View or download sample code (how to download)

Die Beispiel-App verwendet die cookie Authentifizierung Identity ohne ASP.net Core .The sample app uses cookie authentication without ASP.NET Core Identity. Die Konzepte und Beispiele in diesem Thema gelten auch für apps, die ASP.net Core verwenden Identity .The concepts and examples shown in this topic apply equally to apps that use ASP.NET Core Identity. Um ASP.net Core zu verwenden Identity , befolgen Sie die Anweisungen unter Einführung in Identity ASP.net Core .To use ASP.NET Core Identity, follow the guidance in Einführung in Identity ASP.net Core.

Autorisierung für den Zugriff auf eine Seite erforderlichRequire authorization to access a page

Verwenden Sie die AuthorizePage Konvention über AddRazorPagesOptions , um der AuthorizeFilter Seite auf dem angegebenen Pfad ein hinzuzufügen:Use the AuthorizePage convention via AddRazorPagesOptions to add an AuthorizeFilter to the page at the specified path:

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);

Der angegebene Pfad ist der Ansichts-Engine-Pfad. dabei handelt es sich um den Razor relativen Pfad des Seiten Stamms ohne Erweiterung, der nur Schrägstriche enthält.The specified path is the View Engine path, which is the Razor Pages root relative path without an extension and containing only forward slashes.

Verwenden Sie eine Autorisierungs Richtlinie, wenn Sie eine AutorisierungsRichtlinie angeben möchten:To specify an authorization policy, use an AuthorizePage overload:

options.Conventions.AuthorizePage("/Contact", "AtLeast21");

Hinweis

Ein AuthorizeFilter kann auf eine Seiten Modell Klasse mit dem Filter- [Authorize] Attribut angewendet werden.An AuthorizeFilter can be applied to a page model class with the [Authorize] filter attribute. Weitere Informationen finden Sie unter Autorisieren eines Filter Attributs.For more information, see Authorize filter attribute.

Autorisierung für den Zugriff auf einen Ordner von Seiten erforderlichRequire authorization to access a folder of pages

Verwenden Sie die AuthorizeFolder Konvention über AddRazorPagesOptions , um AuthorizeFilter auf allen Seiten in einem Ordner unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizeFolder convention via AddRazorPagesOptions to add an AuthorizeFilter to all of the pages in a folder at the specified path:

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);

Der angegebene Pfad ist der Pfad der Ansichts-Engine, der der relative Pfad des Seiten Stamms ist Razor .The specified path is the View Engine path, which is the Razor Pages root relative path.

Verwenden Sie zum Angeben einer Autorisierungs Richtlinieeine autorizefolder-Überladung:To specify an authorization policy, use an AuthorizeFolder overload:

options.Conventions.AuthorizeFolder("/Private", "AtLeast21");

Autorisierung für den Zugriff auf eine Bereichs Seite erforderlichRequire authorization to access an area page

Verwenden Sie die AuthorizeAreaPage Konvention über AddRazorPagesOptions , um der AuthorizeFilter Bereichs Seite einen unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizeAreaPage convention via AddRazorPagesOptions to add an AuthorizeFilter to the area page at the specified path:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts");

Der Seiten Name ist der Pfad der Datei ohne Erweiterung relativ zum Seiten Stammverzeichnis für den angegebenen Bereich.The page name is the path of the file without an extension relative to the pages root directory for the specified area. Beispielsweise ist der Seiten Name für die Datei Bereiche/ Identity /pages/manage/accounts.cshtml /Manage/Accounts.For example, the page name for the file Areas/Identity/Pages/Manage/Accounts.cshtml is /Manage/Accounts.

Verwenden Sie eine Autorisierungs Richtlinie, wenn Sie eine AutorisierungsRichtlinie angeben möchten:To specify an authorization policy, use an AuthorizeAreaPage overload:

options.Conventions.AuthorizeAreaPage("Identity", "/Manage/Accounts", "AtLeast21");

Autorisierung für den Zugriff auf einen Ordner von Bereichen erforderlichRequire authorization to access a folder of areas

Verwenden Sie die AuthorizeAreaFolder Konvention über AddRazorPagesOptions , um einem AuthorizeFilter alle Bereiche in einem Ordner unter dem angegebenen Pfad hinzuzufügen:Use the AuthorizeAreaFolder convention via AddRazorPagesOptions to add an AuthorizeFilter to all of the areas in a folder at the specified path:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage");

Der Ordner Pfad ist der Pfad des Ordners relativ zum Seiten Stammverzeichnis für den angegebenen Bereich.The folder path is the path of the folder relative to the pages root directory for the specified area. Beispielsweise ist der Ordner Pfad für die Dateien unter " Areas/ Identity /pages/Manage/ " /Manage.For example, the folder path for the files under Areas/Identity/Pages/Manage/ is /Manage.

Verwenden Sie eine Autorisierungs Richtlinie, wenn Sie eine AutorisierungsRichtlinie angeben möchten:To specify an authorization policy, use an AuthorizeAreaFolder overload:

options.Conventions.AuthorizeAreaFolder("Identity", "/Manage", "AtLeast21");

Anonymen Zugriff auf eine Seite zulassenAllow anonymous access to a page

Verwenden Sie die AllowAnonymousToPage Konvention über AddRazorPagesOptions , um eine einer AllowAnonymousFilter Seite im angegebenen Pfad hinzuzufügen:Use the AllowAnonymousToPage convention via AddRazorPagesOptions to add an AllowAnonymousFilter to a page at the specified path:

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);

Der angegebene Pfad ist der Ansichts-Engine-Pfad. dabei handelt es sich um den Razor relativen Pfad des Seiten Stamms ohne Erweiterung, der nur Schrägstriche enthält.The specified path is the View Engine path, which is the Razor Pages root relative path without an extension and containing only forward slashes.

Anonymen Zugriff auf einen Ordner von Seiten zulassenAllow anonymous access to a folder of pages

Verwenden Sie die AllowAnonymousToFolder Konvention über AddRazorPagesOptions , um AllowAnonymousFilter auf allen Seiten in einem Ordner unter dem angegebenen Pfad hinzuzufügen:Use the AllowAnonymousToFolder convention via AddRazorPagesOptions to add an AllowAnonymousFilter to all of the pages in a folder at the specified path:

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);

Der angegebene Pfad ist der Pfad der Ansichts-Engine, der der relative Pfad des Seiten Stamms ist Razor .The specified path is the View Engine path, which is the Razor Pages root relative path.

Hinweis zum Kombinieren von autorisiertem und anonymem ZugriffNote on combining authorized and anonymous access

Es ist zulässig, einen Ordner mit Seiten anzugeben, die eine Autorisierung erfordern, und als anzugeben, dass eine Seite in diesem Ordner anonymen Zugriff zulässt:It's valid to specify that a folder of pages that require authorization and than specify that a page within that folder allows anonymous access:

// This works.
.AuthorizeFolder("/Private").AllowAnonymousToPage("/Private/Public")

Das Gegenteil ist jedoch nicht gültig.The reverse, however, isn't valid. Sie können keinen Ordner von Seiten für den anonymen Zugriff deklarieren und dann eine Seite in diesem Ordner angeben, für die eine Autorisierung erforderlich ist:You can't declare a folder of pages for anonymous access and then specify a page within that folder that requires authorization:

// This doesn't work!
.AllowAnonymousToFolder("/Public").AuthorizePage("/Public/Private")

Das Verlangen der Autorisierung auf der privaten Seite schlägt fehl.Requiring authorization on the Private page fails. Wenn sowohl als AllowAnonymousFilter auch AuthorizeFilter auf die Seite angewendet werden, hat AllowAnonymousFilter Vorrang und steuert den Zugriff.When both the AllowAnonymousFilter and AuthorizeFilter are applied to the page, the AllowAnonymousFilter takes precedence and controls access.

Zusätzliche RessourcenAdditional resources