feat(client): add AuthRedirectHandler for global 401 redirect

Add HTTP message handler that intercepts 401 Unauthorized responses
and redirects to the login page with return URL preserved.
This commit is contained in:
Joseph Doherty
2026-01-06 10:11:43 -05:00
parent 380ffb9a82
commit 0b50c03e44
@@ -0,0 +1,33 @@
using System.Net;
using Microsoft.AspNetCore.Components;
namespace JdeScoping.Client.Http;
/// <summary>
/// HTTP message handler that intercepts 401 Unauthorized responses
/// and redirects to the login page with return URL.
/// </summary>
public class AuthRedirectHandler : DelegatingHandler
{
private readonly NavigationManager _navigationManager;
public AuthRedirectHandler(NavigationManager navigationManager)
{
_navigationManager = navigationManager;
}
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken);
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
var returnUrl = Uri.EscapeDataString(_navigationManager.Uri);
_navigationManager.NavigateTo($"/login?returnUrl={returnUrl}", forceLoad: true);
}
return response;
}
}