Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al usar cookie la autenticación, los puntos de conexión de API devuelven los códigos de estado HTTP adecuados (como 401 o 403) para errores de autenticación en lugar de redirigir las solicitudes no autenticadas a las páginas de inicio de sesión. Este comportamiento, que es más adecuado para el acceso a la API mediante programación, se introdujo en ASP.NET Core en .NET 10.
Cómo ASP.NET Core identifica los puntos de conexión de API
ASP.NET Core aplica automáticamente este comportamiento a los puntos de conexión que reconoce como relacionados con la API, entre los que se incluyen:
- Controladores decorados con el
[ApiController]atributo - Puntos de conexión de API mínimos registrados con
MapGet,MapPost,MapPut,MapDelete, , etc. - Puntos de conexión que solicitan explícitamente respuestas JSON
- SignalR hubs y puntos de conexión
Comportamiento y personalización predeterminados
De forma predeterminada, ASP.NET Core aplica cookie lógica de autenticación basada en el tipo de punto de conexión:
- Páginas web: redireccionamiento a páginas de inicio de sesión
- Puntos de conexión de API: devuelve códigos de estado 401 o 403 sin redirecciones
Configuración del comportamiento
Aunque el comportamiento predeterminado funciona para la mayoría de los escenarios, se puede personalizar si es necesario:
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login";
// The framework automatically handles API endpoints
// No additional configuration needed
});
Si necesita invalidar la detección automática de puntos de conexión específicos, use el [Authorize] atributo con esquemas de autenticación específicos o implemente controladores de autenticación personalizados.
Consideraciones sobre la migración
Este cambio de comportamiento introducido en .NET 10 está diseñado para no interrumpirse para las aplicaciones existentes:
- Aplicaciones web: continúe funcionando como antes con redirecciones de la página de inicio de sesión
- Aplicaciones mixtas: los puntos de conexión de API obtienen códigos de estado adecuados mientras las páginas web obtienen redirecciones.
- Aplicaciones solo de API: beneficiarse de códigos de estado HTTP adecuados sin configuración adicional
Prueba de los puntos de conexión de API
Después de actualizar a ASP.NET Core 10, compruebe que los puntos de conexión de API devuelven los códigos de estado adecuados:
[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
}