Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si usa cookie l'autenticazione, gli endpoint API restituiscono i codici di stato HTTP appropriati (ad esempio 401 o 403) per gli errori di autenticazione anziché reindirizzare le richieste non autenticate alle pagine di accesso. Questo comportamento, più adatto per l'accesso all'API a livello di codice, è stato introdotto in ASP.NET Core in .NET 10.
Come ASP.NET Core identifica gli endpoint API
ASP.NET Core applica automaticamente questo comportamento agli endpoint riconosciuti come correlati all'API, tra cui:
- Controller decorati con l'attributo
[ApiController] - Endpoint API minimi registrati con
MapGet,MapPost,MapPut,MapDeletee così via. - Endpoint che richiedono in modo esplicito risposte JSON
- SignalR hub ed endpoint
Comportamento predefinito e personalizzazione
Per impostazione predefinita, ASP.NET Core applica cookie la logica di autenticazione in base al tipo di endpoint:
- Pagine Web: reindirizzare alle pagine di accesso
- Endpoint API: restituisce codici di stato 401 o 403 senza reindirizzamenti
Configurazione del comportamento
Anche se il comportamento predefinito funziona per la maggior parte degli scenari, può essere personalizzato se necessario:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Se è necessario eseguire l'override del rilevamento automatico per endpoint specifici, usare l'attributo [Authorize] con schemi di autenticazione specifici o implementare gestori di autenticazione personalizzati.
Considerazioni sulla migrazione
Questa modifica di comportamento introdotta in .NET 10 è progettata per essere non di rilievo per le applicazioni esistenti:
- Applicazioni Web: continuare a funzionare come prima con i reindirizzamenti della pagina di accesso
- Applicazioni miste: gli endpoint API ottengono codici di stato appropriati mentre le pagine Web ottengono reindirizzamenti
- Applicazioni solo API: trarre vantaggio dai codici di stato HTTP appropriati senza configurazione aggiuntiva
Test degli endpoint API
Dopo l'aggiornamento a ASP.NET Core 10, verificare che gli endpoint API restituisca i codici di stato appropriati:
[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
}