Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przypadku korzystania z cookie uwierzytelniania punkty końcowe interfejsu API zwracają odpowiednie kody stanu HTTP (takie jak 401 lub 403) w przypadku błędów uwierzytelniania zamiast przekierowywania nieuwierzytelnionych żądań do stron logowania. To zachowanie, które jest bardziej odpowiednie dla programowego dostępu do interfejsu API, zostało wprowadzone w ASP.NET Core na platformie .NET 10.
Jak ASP.NET Core identyfikuje punkty końcowe interfejsu API
ASP.NET Core automatycznie stosuje to zachowanie do punktów końcowych rozpoznawanych jako związane z interfejsem API, w tym:
- Kontrolery ozdobione atrybutem
[ApiController] - Minimalna ilość punktów końcowych interfejsu API zarejestrowanych w
MapGetsystemach ,MapPost,MapPut,MapDeleteitp. - Punkty końcowe, które jawnie żądają odpowiedzi JSON
- SignalR koncentratory i punkty końcowe
Domyślne zachowanie i dostosowywanie
Domyślnie ASP.NET Core stosuje cookie logikę uwierzytelniania na podstawie typu punktu końcowego:
- Strony sieci Web: przekierowywanie do stron logowania
- Punkty końcowe interfejsu API: zwracanie kodów stanu 401 lub 403 bez przekierowań
Konfigurowanie zachowania
Chociaż domyślne zachowanie działa w większości scenariuszy, można go dostosować w razie potrzeby:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Jeśli musisz zastąpić automatyczne wykrywanie określonych punktów końcowych, użyj atrybutu [Authorize] z określonymi schematami uwierzytelniania lub zaimplementuj niestandardowe procedury obsługi uwierzytelniania.
Zagadnienia dotyczące migracji
Ta zmiana zachowania wprowadzona na platformie .NET 10 została zaprojektowana tak, aby nie przerywała działania istniejących aplikacji:
- Aplikacje internetowe: kontynuuj pracę tak jak poprzednio z przekierowaniami strony logowania
- Aplikacje mieszane: punkty końcowe interfejsu API uzyskują odpowiednie kody stanu, podczas gdy strony internetowe uzyskują przekierowania
- Aplikacje tylko interfejsu API: skorzystaj z odpowiednich kodów stanu HTTP bez dodatkowej konfiguracji
Testowanie punktów końcowych interfejsu API
Po uaktualnieniu do wersji ASP.NET Core 10 sprawdź, czy punkty końcowe interfejsu API zwracają odpowiednie kody stanu:
[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
}