Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bei Verwendung der cookie Authentifizierung geben API-Endpunkte die entsprechenden HTTP-Statuscodes (z. B. 401 oder 403) für Authentifizierungsfehler zurück, anstatt nicht authentifizierte Anforderungen an Anmeldeseiten umzuleiten. Dieses Verhalten, das für den programmgesteuerten API-Zugriff besser geeignet ist, wurde in ASP.NET Core in .NET 10 eingeführt.
Wie ASP.NET Core API-Endpunkte identifiziert
ASP.NET Core wendet dieses Verhalten automatisch auf Endpunkte an, die er als API-bezogene Erkennt, einschließlich:
- Controller, die mit dem
[ApiController]Attribut versehen sind - Minimale API-Endpunkte, die bei
MapGet,MapPost,MapPut,MapDeleteusw. registriert sind. - Endpunkte, die JSON-Antworten explizit anfordern
- SignalR Hubs und Endpunkte
Standardverhalten und Anpassung
Standardmäßig wendet cookie ASP.NET Core die Authentifizierungslogik basierend auf dem Endpunkttyp an:
- Webseiten: Umleiten zu Anmeldeseiten
- API-Endpunkte: Zurückgeben von Statuscodes 401 oder 403 ohne Umleitungen
Konfigurieren des Verhaltens
Während das Standardverhalten für die meisten Szenarien funktioniert, kann es bei Bedarf angepasst werden:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Wenn Sie die automatische Erkennung für bestimmte Endpunkte außer Kraft setzen müssen, verwenden Sie das [Authorize] Attribut mit bestimmten Authentifizierungsschemas, oder implementieren Sie benutzerdefinierte Authentifizierungshandler.
Überlegungen zur Migration
Diese In .NET 10 eingeführte Verhaltensänderung ist so konzipiert, dass sie für vorhandene Anwendungen nicht unterbrochen wird:
- Webanwendungen: Arbeiten wie zuvor mit Umleitungen der Anmeldeseite
- Gemischte Anwendungen: API-Endpunkte erhalten die richtigen Statuscodes, während Webseiten Umleitungen erhalten
- Nur-API-Anwendungen: Profitieren Sie von ordnungsgemäßen HTTP-Statuscodes ohne zusätzliche Konfiguration
Testen ihrer API-Endpunkte
Überprüfen Sie nach dem Upgrade auf ASP.NET Core 10, ob Ihre API-Endpunkte geeignete Statuscodes zurückgeben:
[Test]
public async Task UnauthorizedApiRequest_Returns401()
{
var response = await client.GetAsync("/api/secure-data");
Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
Assert.False(response.Headers.Location != null); // No redirect
}