Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Hitelesítés használatakor cookie az API-végpontok a hitelesítési hibákhoz a megfelelő HTTP-állapotkódokat (például 401 vagy 403) adják vissza ahelyett, hogy a hitelesítés nélküli kéréseket átirányítanák a bejelentkezési oldalakra. Ez a programozott API-hozzáféréshez jobban alkalmas viselkedés a .NET 10-es ASP.NET Core-ban lett bevezetve.
Hogyan azonosítja a ASP.NET Core az API-végpontokat?
ASP.NET Core automatikusan alkalmazza ezt a viselkedést az API-val kapcsolatosként felismert végpontokra, beleértve a következőket:
- Az attribútummal
[ApiController]díszített vezérlők - Minimális API-végpontok regisztrálva
MapGet, stbMapPostMapPutMapDelete. - Kifejezetten JSON-válaszokat kérő végpontok
- SignalR központok és végpontok
Alapértelmezett viselkedés és testreszabás
Alapértelmezés szerint a ASP.NET Core a végpont típusa alapján alkalmazza cookie a hitelesítési logikát:
- Weblapok: Átirányítás bejelentkezési lapokra
- API-végpontok: 401-es vagy 403-es állapotkódokat ad vissza átirányítások nélkül
A viselkedés konfigurálása
Bár az alapértelmezett viselkedés a legtöbb forgatókönyv esetében működik, szükség esetén testre szabható:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Ha felül kell bírálnia az adott végpontok automatikus észlelését, használja az [Authorize] attribútumot adott hitelesítési sémákkal, vagy implementáljon egyéni hitelesítési kezelőket.
Migrálási szempontok
A .NET 10-ben bevezetett viselkedésváltozás úgy lett kialakítva, hogy a meglévő alkalmazások esetében ne legyen kompatibilitástörő:
- Webalkalmazások: A bejelentkezési lap átirányításával a korábbiakhoz hasonlóan folytathatja a munkát
- Vegyes alkalmazások: Az API-végpontok megfelelő állapotkódokat kapnak, míg a weblapok átirányításokat kapnak
- Csak API-alkalmazások: A megfelelő HTTP-állapotkódok használata további konfiguráció nélkül
API-végpontok tesztelése
A ASP.NET Core 10-re való frissítés után ellenőrizze, hogy az API-végpontok megfelelő állapotkódokat adnak-e vissza:
[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
}