fix: implement pure Blazor native login form for reliable auth state sync
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m17s

Problem: With prerender: true + JavaScript form submission + location.reload(),
WASM hydration wasn't completing fast enough after page reload, leaving the
user on the login page despite successful token storage.

Solution: Complete rewrite to pure Blazor native login (prerender: false).
This approach:
1. WASM boots and renders the form
2. User submits form (Blazor handles it)
3. HttpClient POST to /api/auth/login
4. Save tokens to localStorage
5. CustomAuthenticationStateProvider.LoginAsync() called directly in C#
6. Blazor detects auth state change synchronously
7. NavigateTo() redirects to dashboard
8. All in same Blazor context, no reload needed

Benefits:
- Auth state update is synchronous with login response
- No WASM boot race conditions
- Direct C# call to CustomAuthenticationStateProvider
- Blazor handles redirect after auth state is confirmed

Trade-off: Login page requires WASM boot (brief spinner) instead of immediate
prerender display. This is acceptable for better reliability.

Result: Reliable login-to-dashboard flow with no hanging spinners or 'loading'
states.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-07-03 13:37:42 +09:00
parent 48c1b69af9
commit b6e0add2ac
3 changed files with 193 additions and 6 deletions
@@ -1,6 +1,6 @@
@page "/admin/login"
@layout TaxBaik.WasmClient.Components.Admin.Layout.BlankLayout
@attribute [AllowAnonymous]
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: true))
@rendermode @(new InteractiveWebAssemblyRenderMode(prerender: false))
<PageTitle>로그인</PageTitle>
<AdminLoginForm />
<AdminLoginFormNative />