feat: JWT 토큰 기반 Admin 로그인 인증 완성

- AuthService로 JWT 토큰 생성 및 검증
- CustomAuthenticationStateProvider를 통한 Blazor 인증 통합
- LocalStorageService로 토큰 관리
- Login.razor 완전 재작성 (실제 DB 검증, 토큰 발급)
- BCrypt 기반 비밀번호 검증
- admin/admin123으로 테스트 가능

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-06-26 22:00:16 +09:00
parent b2c8b35cdd
commit a039bb53a4
10 changed files with 274 additions and 34 deletions
+15 -12
View File
@@ -1,14 +1,17 @@
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Authorization
<Router AppAssembly="typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="routeData" DefaultLayout="typeof(MainLayout)" />
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>찾을 수 없음</PageTitle>
<LayoutView Layout="typeof(MainLayout)">
<p>요청한 페이지를 찾을 수 없습니다.</p>
</LayoutView>
</NotFound>
</Router>
<CascadingAuthenticationState>
<Router AppAssembly="typeof(Program).Assembly">
<Found Context="routeData">
<AuthorizeRouteView RouteData="routeData" DefaultLayout="typeof(MainLayout)" />
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
<NotFound>
<PageTitle>찾을 수 없음</PageTitle>
<LayoutView Layout="typeof(MainLayout)">
<p>요청한 페이지를 찾을 수 없습니다.</p>
</LayoutView>
</NotFound>
</Router>
</CascadingAuthenticationState>