diff --git a/src/dotnet/QuantEngine.Web/Pages/Login.cshtml b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml similarity index 83% rename from src/dotnet/QuantEngine.Web/Pages/Login.cshtml rename to src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml index 0674146..f3fc22f 100644 --- a/src/dotnet/QuantEngine.Web/Pages/Login.cshtml +++ b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml @@ -1,6 +1,5 @@ -@page "/login" -@using QuantEngine.Web.Pages -@model QuantEngine.Web.Pages.LoginModel +@page +@model QuantEngine.Web.Pages.Account.LoginModel @{ ViewData["Title"] = "로그인 - QuantEngine"; } @@ -140,6 +139,11 @@ padding: 12px 14px; border-radius: 6px; font-size: 13px; + display: none; + } + + .alert.show { + display: block; } .alert-error { @@ -213,18 +217,11 @@ @if (!string.IsNullOrEmpty(Model.ErrorMessage)) { -
+
오류: @Model.ErrorMessage
} - @if (!string.IsNullOrEmpty(Model.SuccessMessage)) - { -
- @Model.SuccessMessage -
- } -
@@ -270,31 +267,5 @@

© 2026 QuantEngine. 모든 권리 예약.

- - diff --git a/src/dotnet/QuantEngine.Web/Pages/Login.cshtml.cs b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs similarity index 87% rename from src/dotnet/QuantEngine.Web/Pages/Login.cshtml.cs rename to src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs index 8fa713a..4182c94 100644 --- a/src/dotnet/QuantEngine.Web/Pages/Login.cshtml.cs +++ b/src/dotnet/QuantEngine.Web/Pages/Account/Login.cshtml.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; -namespace QuantEngine.Web.Pages +namespace QuantEngine.Web.Pages.Account { public class LoginModel : PageModel { @@ -11,7 +11,6 @@ namespace QuantEngine.Web.Pages public string? Username { get; set; } public bool RememberUsername { get; set; } public string? ErrorMessage { get; set; } - public string? SuccessMessage { get; set; } public LoginModel(HttpClient httpClient, ILogger logger) { @@ -21,8 +20,6 @@ namespace QuantEngine.Web.Pages public void OnGet() { - // GET 요청: 로그인 페이지 표시 - // 쿠키에서 아이디 복원 (선택사항) if (Request.Cookies.TryGetValue("quant_admin_username", out var savedUsername)) { Username = savedUsername; @@ -42,13 +39,11 @@ namespace QuantEngine.Web.Pages try { - // API 호출 var loginRequest = new { Username = username, Password = password }; var response = await _httpClient.PostAsJsonAsync("/api/auth/login", loginRequest); if (response.IsSuccessStatusCode) { - // 성공: 쿠키에 아이디 저장 if (rememberUsername) { Response.Cookies.Append( @@ -57,7 +52,7 @@ namespace QuantEngine.Web.Pages new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTimeOffset.UtcNow.AddDays(30), - HttpOnly = false, // JavaScript에서 접근 가능 + HttpOnly = false, SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict } ); @@ -67,7 +62,6 @@ namespace QuantEngine.Web.Pages Response.Cookies.Delete("quant_admin_username"); } - // 홈페이지로 리다이렉트 return RedirectToPage("/Index"); } else diff --git a/src/dotnet/QuantEngine.Web/Program.cs b/src/dotnet/QuantEngine.Web/Program.cs index 6082586..0e4d28f 100644 --- a/src/dotnet/QuantEngine.Web/Program.cs +++ b/src/dotnet/QuantEngine.Web/Program.cs @@ -415,12 +415,9 @@ app.MapPost("/api/history/{domain}", async (string domain, JsonElement payload, }); }); -// Razor Pages (로그인 등) +// Razor Pages (Account/Login) app.MapRazorPages(); -// 정적 로그인 페이지 (wwwroot/login.html) -app.MapGet("/login", () => Results.File("wwwroot/login.html", "text/html")); - app.MapRazorComponents() .AddInteractiveServerRenderMode() .AddInteractiveWebAssemblyRenderMode() diff --git a/src/dotnet/QuantEngine.Web/wwwroot/login.html b/src/dotnet/QuantEngine.Web/wwwroot/login.html deleted file mode 100644 index ccc9a41..0000000 --- a/src/dotnet/QuantEngine.Web/wwwroot/login.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - 로그인 - QuantEngine - - - - - - - - diff --git a/test-results/login-final-validation.png b/test-results/login-final-validation.png deleted file mode 100644 index 51d3658..0000000 Binary files a/test-results/login-final-validation.png and /dev/null differ diff --git a/test-results/login-mobile-view.png b/test-results/login-mobile-view.png deleted file mode 100644 index 24735ba..0000000 Binary files a/test-results/login-mobile-view.png and /dev/null differ