fix: resolve login page CSS styling issues

- Map /login route to static login.html file to serve embedded CSS correctly
- Redirect /login to /login.html for proper static file delivery
- Fix NavigationContext namespace ambiguity in App.razor (MudBlazor vs ASP.NET)
- Fix StatusCodePages middleware path validation (StartsWithSegments → StartsWith)

Login page now displays with:
- Gradient background with frosted glass card design
- Properly styled form inputs and validation
- Professional Material Design appearance
- Working client-side authentication flow

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 00:35:26 +09:00
parent e993adf936
commit acf7b8cfc4
5 changed files with 32 additions and 2 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

+10
View File
@@ -0,0 +1,10 @@
const { chromium } = require('@playwright/test');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('http://localhost:5265/login');
await page.screenshot({ path: './login-screenshot.png', fullPage: true });
console.log('Screenshot saved to ./login-screenshot.png');
await browser.close();
})();
+14
View File
@@ -0,0 +1,14 @@
import { chromium } from '@playwright/test';
(async () => {
try {
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1280, height: 720 } });
await page.goto('http://localhost:5265/login');
await page.screenshot({ path: './login-screenshot.png', fullPage: true });
console.log('✓ Screenshot saved to ./login-screenshot.png');
await browser.close();
} catch (e) {
console.error('Error:', e.message);
}
})();
@@ -35,7 +35,7 @@
</html> </html>
@code { @code {
private async Task OnNavigateAsync(NavigationContext context) private async Task OnNavigateAsync(Microsoft.AspNetCore.Components.Routing.NavigationContext context)
{ {
// /Account/* paths are Razor Pages, not Blazor components // /Account/* paths are Razor Pages, not Blazor components
// Force browser navigation instead of Blazor routing // Force browser navigation instead of Blazor routing
+7 -1
View File
@@ -157,7 +157,7 @@ app.UseStaticFiles(new StaticFileOptions
app.UseStatusCodePages(async ctx => app.UseStatusCodePages(async ctx =>
{ {
var path = ctx.HttpContext.Request.Path.Value ?? ""; var path = ctx.HttpContext.Request.Path.Value ?? "";
if (!path.StartsWithSegments("/api", StringComparison.OrdinalIgnoreCase) if (!path.StartsWith("/api", StringComparison.OrdinalIgnoreCase)
&& !path.StartsWith("/Account/", StringComparison.OrdinalIgnoreCase)) && !path.StartsWith("/Account/", StringComparison.OrdinalIgnoreCase))
{ {
ctx.HttpContext.Response.Redirect("/not-found"); ctx.HttpContext.Response.Redirect("/not-found");
@@ -194,6 +194,12 @@ app.MapGet("/", async (HttpContext ctx) =>
await Task.CompletedTask; await Task.CompletedTask;
}); });
// Redirect /login to /login.html (static file)
app.MapGet("/login", (HttpContext ctx) =>
{
ctx.Response.Redirect("/login.html", permanent: false);
});
// Collection API Endpoints (must be before MapRazorComponents) // Collection API Endpoints (must be before MapRazorComponents)
app.MapCollectionEndpoints(); app.MapCollectionEndpoints();