Einfache Autorisierung in ASP.net CoreSimple authorization in ASP.NET Core

Die Autorisierung in ASP.net Core wird mit AuthorizeAttribute und den verschiedenen Parametern gesteuert.Authorization in ASP.NET Core is controlled with AuthorizeAttribute and its various parameters. In seiner einfachsten Form schränkt das Anwenden des- [Authorize] Attributs auf einen Controller, eine Aktion oder eine Razor Seite den Zugriff auf diese Komponente auf einen beliebigen authentifizierten Benutzer ein.In its simplest form, applying the [Authorize] attribute to a controller, action, or Razor Page, limits access to that component to any authenticated user.

Der folgende Code schränkt z. b. den Zugriff auf AccountController alle authentifizierten Benutzer ein.For example, the following code limits access to the AccountController to any authenticated user.

[Authorize]
public class AccountController : Controller
{
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

Wenn Sie die Autorisierung auf eine Aktion anstelle des Controllers anwenden möchten, wenden Sie das- AuthorizeAttribute Attribut auf die eigentliche Aktion an:If you want to apply authorization to an action rather than the controller, apply the AuthorizeAttribute attribute to the action itself:

public class AccountController : Controller
{
   public ActionResult Login()
   {
   }

   [Authorize]
   public ActionResult Logout()
   {
   }
}

Jetzt können nur authentifizierte Benutzer auf die Logout Funktion zugreifen.Now only authenticated users can access the Logout function.

Sie können auch das- AllowAnonymous Attribut verwenden, um den Zugriff durch nicht authentifizierte Benutzer auf einzelne Aktionen zuzulassen.You can also use the AllowAnonymous attribute to allow access by non-authenticated users to individual actions. Zum Beispiel:For example:

[Authorize]
public class AccountController : Controller
{
    [AllowAnonymous]
    public ActionResult Login()
    {
    }

    public ActionResult Logout()
    {
    }
}

Dies erlaubt nur authentifizierte Benutzer, AccountController außer bei der Login Aktion, auf die jeder zugreifen kann, unabhängig vom authentifizierten oder nicht authentifizierten/anonymen Status.This would allow only authenticated users to the AccountController, except for the Login action, which is accessible by everyone, regardless of their authenticated or unauthenticated / anonymous status.

Warnung

[AllowAnonymous]umgeht alle Autorisierungs Anweisungen.[AllowAnonymous] bypasses all authorization statements. Wenn Sie [AllowAnonymous] und ein beliebiges Attribut kombinieren [Authorize] , [Authorize] werden die Attribute ignoriert.If you combine [AllowAnonymous] and any [Authorize] attribute, the [Authorize] attributes are ignored. Wenn Sie z. b [AllowAnonymous] . auf Controller Ebene anwenden, werden alle [Authorize] Attribute auf dem gleichen Controller (oder in einer beliebigen Aktion) ignoriert.For example if you apply [AllowAnonymous] at the controller level, any [Authorize] attributes on the same controller (or on any action within it) is ignored.

Informationen dazu, wie Global alle Benutzer authentifiziert werden müssen, finden Sie unter Anfordern von authentifizierten Benutzern.For information on how to globally require all users to be authenticated, see Require authenticated users.

Authorize-Attribut und Razor PagesAuthorize attribute and Razor Pages

AuthorizeAttributeKann nicht auf Razor Seiten Handler angewendet werden.The AuthorizeAttribute can not be applied to Razor Page handlers. [Authorize]Kann z. b. nicht auf OnGet , OnPost oder einen anderen Seiten Handler angewendet werden.For example, [Authorize] can't be applied to OnGet, OnPost, or any other page handler. Verwenden Sie ggf. einen ASP.net Core MVC-Controller für Seiten mit unterschiedlichen Autorisierungs Anforderungen für verschiedene Handler.Consider using an ASP.NET Core MVC controller for pages with different authorization requirements for different handlers.

Die folgenden zwei Ansätze können verwendet werden, um die Autorisierung auf Razor seitenhandlermethoden anzuwenden:The following two approaches can be used to apply authorization to Razor Page handler methods:

Warnung

Der pagehandlerauth -Beispiel Ansatz ist nicht:The PageHandlerAuth sample approach does not:

  • Verfassen Sie mit Autorisierungs Attributen, die auf die Seite, das Seiten Modell oder Global angewendet werden.Compose with authorization attributes applied to the page, page model, or globally. Das Verfassen von Autorisierungs Attributen führt dazu, dass die Authentifizierung und Autorisierung mehrmals durchgeführt AuthorizeAttribute wird, wenn eine oder mehrere AuthorizeFilter Instanzen auch auf die Seite angewendet werden.Composing authorization attributes results in authentication and authorization executing multiple times when you have one more AuthorizeAttribute or AuthorizeFilter instances also applied to the page.
  • Arbeiten Sie in Verbindung mit dem Rest ASP.net Core Authentifizierungs-und Autorisierungssystem.Work in conjunction with the rest of ASP.NET Core authentication and authorization system. Sie müssen überprüfen, ob dieser Ansatz für Ihre Anwendung ordnungsgemäß funktioniert.You must verify using this approach works correctly for your application.

Es ist nicht geplant, den AuthorizeAttribute auf Razor Seiten Handlern zu unterstützen.There are no plans to support the AuthorizeAttribute on Razor Page handlers.