Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bij het gebruik van cookie verificatie retourneren API-eindpunten de juiste HTTP-statuscodes (zoals 401 of 403) voor verificatiefouten in plaats van niet-geverifieerde aanvragen om te leiden naar aanmeldingspagina's. Dit gedrag, dat geschikter is voor programmatische API-toegang, is geïntroduceerd in ASP.NET Core in .NET 10.
Hoe ASP.NET Core API-eindpunten identificeert
ASP.NET Core dit gedrag automatisch toepast op eindpunten die worden herkend als API-gerelateerd, waaronder:
- Controllers ingericht met het
[ApiController]kenmerk - Minimale API-eindpunten die zijn geregistreerd bij
MapGet,MapPost,MapPut,MapDeleteenzovoort. - Eindpunten die expliciet JSON-antwoorden aanvragen
- SignalR hubs en eindpunten
Standaardgedrag en aanpassing
Standaard past ASP.NET Core verificatielogica toe cookie op basis van het eindpunttype:
- Webpagina's: omleiden naar aanmeldingspagina's
- API-eindpunten: retourneert 401- of 403-statuscodes zonder omleidingen
Het gedrag configureren
Hoewel het standaardgedrag werkt voor de meeste scenario's, kan het indien nodig worden aangepast:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Als u de automatische detectie voor specifieke eindpunten wilt overschrijven, gebruikt u het [Authorize] kenmerk met specifieke verificatieschema's of implementeert u aangepaste verificatiehandlers.
Overwegingen bij migratie
Deze gedragswijziging die is geïntroduceerd in .NET 10, is ontworpen om niet-brekend te zijn voor bestaande toepassingen:
- Webtoepassingen: blijven werken zoals voorheen met omleiding van aanmeldingspagina's
- Gemengde toepassingen: API-eindpunten krijgen de juiste statuscodes terwijl webpagina's omleidingen krijgen
- API-alleen-toepassingen: profiteren van de juiste HTTP-statuscodes zonder aanvullende configuratie
Uw API-eindpunten testen
Nadat u een upgrade naar ASP.NET Core 10 hebt uitgevoerd, controleert u of uw API-eindpunten de juiste statuscodes retourneren:
[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
}