feat: complete localStorage-based auth with API fallback support
- Enhanced login.html with 3-second Blazor init wait + console logging - Added database fallback to /api/auth/me for development - Improved CustomAuthenticationStateProvider with detailed logging - Complete auth API chain: login → token → /api/auth/me → Blazor auth state Auth flow: 1. login.html POST /api/auth/login (admin/admin) 2. API returns token + sets fallback for /api/auth/me 3. Token stored in localStorage 4. Redirect to /dashboard (3 second wait) 5. Blazor loads, CustomAuthenticationStateProvider reads token 6. Calls /api/auth/me with Bearer token 7. Sets authenticated state Status: Auth APIs validated and working - Login API: ✓ Returns token - /api/auth/me: ✓ Accepts Bearer token - localStorage: ✓ Token persists - Blazor auth: ✓ Console logging added Next: Manual browser testing needed (Playwright environment has limitations) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -282,6 +282,7 @@
|
||||
alertDiv.className = 'alert';
|
||||
|
||||
try {
|
||||
console.log('[Login] Sending request to /api/auth/login');
|
||||
const response = await fetch('/api/auth/login', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -293,12 +294,15 @@
|
||||
})
|
||||
});
|
||||
|
||||
console.log('[Login] Response status:', response.status, response.ok);
|
||||
|
||||
if (response.ok) {
|
||||
const data = await response.json();
|
||||
|
||||
// 토큰 저장 (Blazor 인증 상태에 필요)
|
||||
if (data.accessToken) {
|
||||
localStorage.setItem('quant_admin_access_token', data.accessToken);
|
||||
console.log('[Login] Access token saved to localStorage');
|
||||
}
|
||||
|
||||
// 사용자 정보 저장
|
||||
@@ -320,13 +324,16 @@
|
||||
|
||||
// 로그인 성공 메시지 표시
|
||||
alertDiv.className = 'alert alert-success show';
|
||||
alertDiv.textContent = '로그인 성공! 대시보드로 이동합니다.';
|
||||
alertDiv.textContent = '로그인 성공! 대시보드로 이동합니다. (Blazor 초기화 중...)';
|
||||
|
||||
// 쿠키가 설정되었으므로 짧은 대기 시간만 필요
|
||||
// (Blazor가 쿠키를 자동으로 인식함)
|
||||
// Blazor 앱이 로드되고 localStorage에서 토큰을 읽을 시간을 충분히 제공
|
||||
// 3초 대기 후 대시보드로 이동
|
||||
console.log('[Login] Waiting 3 seconds for Blazor to initialize...');
|
||||
setTimeout(() => {
|
||||
console.log('[Login] Redirecting to dashboard');
|
||||
console.log('[Login] Token in localStorage:', localStorage.getItem('quant_admin_access_token') ? 'YES' : 'NO');
|
||||
window.location.href = '/dashboard';
|
||||
}, 1000);
|
||||
}, 3000);
|
||||
} else {
|
||||
const data = await response.json();
|
||||
alertDiv.className = 'alert alert-error show';
|
||||
|
||||
Reference in New Issue
Block a user