Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du använder cookie autentisering returnerar API-slutpunkter lämpliga HTTP-statuskoder (till exempel 401 eller 403) för autentiseringsfel i stället för att omdirigera oautentiserade begäranden till inloggningssidor. Det här beteendet, som är mer lämpligt för programmatisk API-åtkomst, introducerades i ASP.NET Core i .NET 10.
Så här identifierar ASP.NET Core API-slutpunkter
ASP.NET Core tillämpar automatiskt det här beteendet på slutpunkter som identifieras som API-relaterade, inklusive:
- Kontrollanter som är dekorerade med [ApiController]attributet
- Minimala API-slutpunkter som registrerats med MapGet,MapPost,MapPut,MapDeleteosv.
- Slutpunkter som uttryckligen begär JSON-svar
- SignalR hubbar och slutpunkter
Standardbeteende och anpassning
Som standard tillämpar ASP.NET Core autentiseringslogik cookie baserat på slutpunktstypen:
- Webbsidor: Omdirigera till inloggningssidor
- API-slutpunkter: Returnera 401- eller 403-statuskoder utan omdirigeringar
Konfigurera beteendet
Standardbeteendet fungerar för de flesta scenarier, men det kan anpassas om det behövs:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.LoginPath = "/Account/Login";
        // The framework automatically handles API endpoints
        // No additional configuration needed
    });
Om du behöver åsidosätta den automatiska identifieringen för specifika slutpunkter använder du [Authorize] attributet med specifika autentiseringsscheman eller implementerar anpassade autentiseringshanterare.
Överväganden vid migrering
Den här beteendeändringen som introduceras i .NET 10 är utformad för att inte brytas för befintliga program:
- Webbprogram: Fortsätt att fungera som tidigare med omdirigeringar av inloggningssidan
- Blandade program: API-slutpunkter får rätt statuskoder medan webbsidor får omdirigeringar
- API-program: Dra nytta av rätt HTTP-statuskoder utan ytterligare konfiguration
Testa DINA API-slutpunkter
När du har uppgraderat till ASP.NET Core 10 kontrollerar du att DINA API-slutpunkter returnerar lämpliga statuskoder:
[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
}
Relaterade ämnen
ASP.NET Core