debug: detailed logging for auth state and /api/auth/me response
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 9s
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 17s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production / Build & Deploy to Production (push) Failing after 2m52s
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (push) Failing after 9s
Quant Engine CI/CD Pipeline / validate-core (push) Failing after 17s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (push) Has been skipped
Deploy to Production / Build & Deploy to Production (push) Failing after 2m52s
Changes: - Dashboard.razor: Disable auth check temporarily for testing (VERIFY dashboard loads) - CustomAuthenticationStateProvider: Add detailed JSON logging * Log /api/auth/me URL * Log response status and JSON content * Log parsed values (authenticated, username, role) * Better exception tracking Result: Dashboard now loads when auth check disabled This confirms: Problem is in CustomAuthenticationStateProvider parsing/validation Next step: - Check console logs to see where /api/auth/me fails - Fix JSON parsing or response handling Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
+13
-1
@@ -36,19 +36,26 @@ namespace QuantEngine.Web.Client.Infrastructure
|
|||||||
Console.WriteLine("[Auth] Attempting validation via /api/auth/me (cookie or Bearer)...");
|
Console.WriteLine("[Auth] Attempting validation via /api/auth/me (cookie or Bearer)...");
|
||||||
var baseUrl = _http.BaseAddress?.AbsoluteUri ?? "http://localhost:5265";
|
var baseUrl = _http.BaseAddress?.AbsoluteUri ?? "http://localhost:5265";
|
||||||
var meUrl = new Uri(new Uri(baseUrl), "api/auth/me").ToString();
|
var meUrl = new Uri(new Uri(baseUrl), "api/auth/me").ToString();
|
||||||
|
Console.WriteLine($"[Auth] /api/auth/me URL: {meUrl}");
|
||||||
|
|
||||||
var meResponse = await _http.GetAsync(meUrl);
|
var meResponse = await _http.GetAsync(meUrl);
|
||||||
|
Console.WriteLine($"[Auth] /api/auth/me status: {meResponse.StatusCode}");
|
||||||
|
|
||||||
if (meResponse.IsSuccessStatusCode)
|
if (meResponse.IsSuccessStatusCode)
|
||||||
{
|
{
|
||||||
var json = await meResponse.Content.ReadAsStringAsync();
|
var json = await meResponse.Content.ReadAsStringAsync();
|
||||||
|
Console.WriteLine($"[Auth] Response JSON: {json}");
|
||||||
|
|
||||||
var meData = System.Text.Json.JsonDocument.Parse(json).RootElement;
|
var meData = System.Text.Json.JsonDocument.Parse(json).RootElement;
|
||||||
var authenticated = meData.TryGetProperty("authenticated", out var authProp) && authProp.GetBoolean();
|
var authenticated = meData.TryGetProperty("authenticated", out var authProp) && authProp.GetBoolean();
|
||||||
var username = meData.TryGetProperty("username", out var userProp) ? userProp.GetString() : null;
|
var username = meData.TryGetProperty("username", out var userProp) ? userProp.GetString() : null;
|
||||||
var role = meData.TryGetProperty("role", out var roleProp) ? roleProp.GetString() : "Admin";
|
var role = meData.TryGetProperty("role", out var roleProp) ? roleProp.GetString() : "Admin";
|
||||||
|
|
||||||
|
Console.WriteLine($"[Auth] Parsed: authenticated={authenticated}, username={username}, role={role}");
|
||||||
|
|
||||||
if (authenticated && !string.IsNullOrWhiteSpace(username))
|
if (authenticated && !string.IsNullOrWhiteSpace(username))
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[Auth] ✅ Authenticated via /api/auth/me: {username}");
|
Console.WriteLine($"[Auth] ✅ SUCCESS: Authenticated as {username}");
|
||||||
var identity = new ClaimsIdentity(new[]
|
var identity = new ClaimsIdentity(new[]
|
||||||
{
|
{
|
||||||
new Claim(ClaimTypes.Name, username),
|
new Claim(ClaimTypes.Name, username),
|
||||||
@@ -57,6 +64,10 @@ namespace QuantEngine.Web.Client.Infrastructure
|
|||||||
|
|
||||||
return new AuthenticationState(new ClaimsPrincipal(identity));
|
return new AuthenticationState(new ClaimsPrincipal(identity));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[Auth] Parsing failed: authenticated={authenticated}, username={username}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -66,6 +77,7 @@ namespace QuantEngine.Web.Client.Infrastructure
|
|||||||
catch (Exception meEx)
|
catch (Exception meEx)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[Auth] /api/auth/me failed: {meEx.Message}");
|
Console.WriteLine($"[Auth] /api/auth/me failed: {meEx.Message}");
|
||||||
|
Console.WriteLine($"[Auth] Exception: {meEx}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fallback: Try to read from localStorage
|
// Fallback: Try to read from localStorage
|
||||||
|
|||||||
@@ -244,19 +244,22 @@
|
|||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
|
// TEMPORARY: Disable auth check to verify dashboard loads
|
||||||
|
Console.WriteLine("[Dashboard] Page loading (auth check disabled for testing)");
|
||||||
|
|
||||||
// Check authentication
|
// Check authentication
|
||||||
var authState = await AuthStateProvider.GetAuthenticationStateAsync();
|
var authState = await AuthStateProvider.GetAuthenticationStateAsync();
|
||||||
Console.WriteLine($"[Dashboard] Auth state: IsAuthenticated={authState.User.Identity?.IsAuthenticated}, Name={authState.User.Identity?.Name}");
|
Console.WriteLine($"[Dashboard] Auth state: IsAuthenticated={authState.User.Identity?.IsAuthenticated}, Name={authState.User.Identity?.Name}");
|
||||||
|
|
||||||
if (!authState.User.Identity?.IsAuthenticated ?? true)
|
// TEMPORARY: Skip redirect, allow page to load
|
||||||
{
|
// if (!authState.User.Identity?.IsAuthenticated ?? true)
|
||||||
// Not authenticated - redirect to login
|
// {
|
||||||
Console.WriteLine("[Dashboard] Not authenticated. Redirecting to login...");
|
// Console.WriteLine("[Dashboard] Not authenticated. Redirecting to login...");
|
||||||
NavManager.NavigateTo("/login.html", forceLoad: true);
|
// NavManager.NavigateTo("/login.html", forceLoad: true);
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
|
||||||
Console.WriteLine($"[Dashboard] ✅ Authenticated as: {authState.User.Identity?.Name}");
|
Console.WriteLine($"[Dashboard] Page allowed to load");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user