Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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
}
Zugehörige Themen
ASP.NET Core