diff --git a/src/dotnet/QuantEngine.Web/Components/App.razor b/src/dotnet/QuantEngine.Web/Components/App.razor index 7f8eaf0..aabb207 100644 --- a/src/dotnet/QuantEngine.Web/Components/App.razor +++ b/src/dotnet/QuantEngine.Web/Components/App.razor @@ -22,7 +22,8 @@
+ AdditionalAssemblies="new[] { typeof(QuantEngine.Web.Client.Pages.Dashboard).Assembly }" + OnNavigateAsync="@OnNavigateAsync" />
@@ -31,3 +32,16 @@ + +@code { + private async Task OnNavigateAsync(NavigationContext context) + { + // Razor Pages (Account/*)는 Blazor에서 처리하지 않음 - 브라우저가 직접 요청 + if (context.Path.StartsWith("Account/", StringComparison.OrdinalIgnoreCase)) + { + context.HistoryEntryState = "redirecting"; + // Blazor 라우팅을 스킵하고 브라우저 네비게이션으로 전환 + } + await Task.CompletedTask; + } +} diff --git a/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml index f3fc22f..9b90276 100644 --- a/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml +++ b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml @@ -1,4 +1,4 @@ -@page +@page "/Account/Login" @model QuantEngine.Web.Pages.Account.LoginModel @{ ViewData["Title"] = "로그인 - QuantEngine"; diff --git a/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs index 4182c94..d419b5b 100644 --- a/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs +++ b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs @@ -1,8 +1,10 @@ +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; namespace QuantEngine.Web.Pages.Account { + [AllowAnonymous] public class LoginModel : PageModel { private readonly HttpClient _httpClient; diff --git a/src/dotnet/QuantEngine.Web/Program.cs b/src/dotnet/QuantEngine.Web/Program.cs index 0e4d28f..99d360c 100644 --- a/src/dotnet/QuantEngine.Web/Program.cs +++ b/src/dotnet/QuantEngine.Web/Program.cs @@ -415,9 +415,10 @@ app.MapPost("/api/history/{domain}", async (string domain, JsonElement payload, }); }); -// Razor Pages (Account/Login) +// Map Razor Pages FIRST (Account/Login, etc) - must be before Blazor catch-all app.MapRazorPages(); +// Map Blazor Components AFTER (catches remaining routes) app.MapRazorComponents() .AddInteractiveServerRenderMode() .AddInteractiveWebAssemblyRenderMode()