fix: implement Blazor-native login form to properly update authentication state
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m26s
TaxBaik CI/CD / build-and-deploy (push) Successful in 2m26s
Problem: JavaScript login form saved tokens to localStorage but didn't notify CustomAuthenticationStateProvider, causing [Authorize] pages to remain in 'loading' state indefinitely. The provider only reads tokens when: 1. GetAuthenticationStateAsync() is called (page load) 2. NotifyAuthenticationStateChanged() is triggered (UI updates) But JavaScript login didn't trigger either, leaving the authentication state stale. Solution: Convert AdminLoginForm from HTML+JavaScript to pure Blazor component. Now the login flow is: 1. User enters credentials in Blazor form 2. HttpClient POST to /api/auth/login 3. Save tokens to localStorage 4. Call CustomAuthenticationStateProvider.LoginAsync() directly 5. Blazor detects auth state change and re-evaluates [Authorize] pages 6. Dashboard [Authorize] page renders successfully Result: Immediate authentication state update, no loading timeout on protected pages. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" data-bs-theme="light" class="set-nav-dark">
|
||||
|
||||
|
||||
<!-- Mirrored from getwebora.com/smartadmin/demo/error-404-2.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 30 Jun 2026 04:28:04 GMT -->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title> SmartAdmin v5 - Modern Admin Dashboard | SmartAdmin - Enterprise Admin Dashboard by Webora</title>
|
||||
<meta name="description" content="Page Description">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=5">
|
||||
|
||||
<!-- Standard favicon for browsers -->
|
||||
<link rel="icon" href="img/favicon-32x32.png" type="image/png" sizes="32x32">
|
||||
<link rel="icon" href="img/favicon-16x16.png" type="image/png" sizes="16x16">
|
||||
|
||||
<!-- Apple Touch Icon (iOS) -->
|
||||
<link rel="apple-touch-icon" href="img/apple-touch-icon.png" sizes="180x180">
|
||||
|
||||
<!-- Android/Chrome (Progressive Web App) -->
|
||||
<link rel="icon" href="img/favicon-192x192.png" type="image/png" sizes="192x192">
|
||||
|
||||
<!-- Call App Mode on ios devices -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
|
||||
<!-- Remove Tap Highlight on Windows Phone IE -->
|
||||
<meta name="msapplication-tap-highlight" content="no">
|
||||
|
||||
<!-- Vendor css -->
|
||||
<link rel="stylesheet" media="screen, print" href="plugins/waves/waves.min.css">
|
||||
|
||||
<!-- Base css -->
|
||||
<link rel="stylesheet" media="screen, print" href="css/smartapp.min.css">
|
||||
|
||||
<!-- Icons css-->
|
||||
<link rel="stylesheet" media="screen, print" href="webfonts/smartadmin/sa-icons.css">
|
||||
<link rel="stylesheet" media="screen, print" href="webfonts/fontawesome/fontawesome.css">
|
||||
|
||||
<!-- Save/Load functionality JavaScript -->
|
||||
<script src="scripts/core/saveloadscript.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Login Page -->
|
||||
<section class="hero-section position-relative overflow-hidden">
|
||||
<div class="container" style="position: relative; z-index: 1;">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-11 col-md-8 col-lg-6 col-xl-4">
|
||||
|
||||
<div class="login-card p-4 p-md-6 bg-dark bg-opacity-50 translucent-dark rounded-4 text-center">
|
||||
<div class="mb-5 mx-auto" style="max-width: 100px;">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<g fill="none" fill-rule="evenodd" clip-rule="evenodd">
|
||||
<path fill="#fff" d="M12.276 15.59c-.277-.662-2.117-.054-2.874 1.706a5.39 5.39 0 0 0 .964 5.877a2.99 2.99 0 0 0 4.592-1.473a7.12 7.12 0 0 0-.94-5.43c-.414-.458-1.353-.988-1.742-.68m-.136.496a2.17 2.17 0 0 0-1.713 1.603a4.5 4.5 0 0 0 .727 4.404a1.69 1.69 0 0 0 2.567-.83c.33-.883.375-4.492-1.263-4.906a.43.43 0 0 1-.318-.271" />
|
||||
<path fill="#ff0c0c" d="M13.019.337c-.2-.458-1.431-.39-2.078-.146a9.2 9.2 0 0 0-3.608 4.108c-3.192 5.907-3.78 9.218 2.746 9.734c2.484.177 4.98-.078 7.377-.754a2.44 2.44 0 0 0 1.705-2.763C18.929 8.668 14.624-.528 13.019.336m-.2.536a.4.4 0 0 1-.276.028C9.386.25 6.273 9.22 6.32 10.718c.082 2.829 8.758 2.105 10.629 1.342c.69-.276 1.014-.596.93-1.41a25 25 0 0 0-1.657-4.49C13.502.143 13.062 1.527 12.82.875z" />
|
||||
<path fill="#ff0c0c" d="M12.46 9.179c-.25-.702-2.486-.172-1.914 1.533a1.381 1.381 0 0 0 2.567.141c.406-.975-.238-1.666-.652-1.674zm-.121-1.13c1.177-5.432-2-8.29-.83-.03a.415.415 0 1 0 .83.03" />
|
||||
<path fill="#fff" d="M19.917 21.432c.243 2.04.23 2.62.754 2.565c.525-.056.33-.415.276-2.708c.83-.133 1.758-.108 1.692-.694c-.067-.585-.813-.356-1.71-.298c-.042-2.263-.034-2.21-.147-4.24c-.166-2.507-5.338 3.336-4.68 4.745c.45.926 2.782.744 3.815.63m-.122-1.077c-.11-1.105-.149-1.735-.237-2.926a10 10 0 0 0-1.79 2.27c-.46.896-.49.515.276.595q.873.09 1.751.053zM5.35 21.07c.222 1.882.206 2.763.772 2.71s.326-.477.277-2.781c.878-.07 1.76-.022 1.693-.62c-.058-.513-.552-.353-1.713-.367c-.038-2.183-.036-2.166-.143-4.17a.666.666 0 0 0-1.028-.513A19.2 19.2 0 0 0 1.38 20.34a.67.67 0 0 0 .627.845s1.724-.027 3.343-.116m-.117-1.077c-.097-1.01-.12-1.382-.213-2.647a30 30 0 0 0-1.934 2.583c.602.022 1.38.047 2.147.064" />
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<h4 class="text-white mb-2">Page Not Found</h4>
|
||||
<p class="text-white opacity-50 mb-4">
|
||||
Sorry, the page you are looking for doesn’t exist or has been moved.
|
||||
</p>
|
||||
|
||||
<div class="mb-4">
|
||||
<a href="index.html" class="btn btn-primary me-2">Back to Home</a>
|
||||
<a href="#!" class="btn btn-success">Contact Support</a>
|
||||
</div>
|
||||
|
||||
<div class="opacity-50 text-white small">
|
||||
If you believe this is a mistake, please let us know.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="net"></div>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- Animation Plugin -->
|
||||
<script src="plugins/three/three.min.js"></script>
|
||||
<script src="plugins/vanta/vanta.halo.min.js"></script>
|
||||
<script src="plugins/vanta/vanta.net.min.js"></script>
|
||||
<script src="scripts/pages/auth-animation.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
<!-- Mirrored from getwebora.com/smartadmin/demo/error-404-2.html by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 30 Jun 2026 04:28:04 GMT -->
|
||||
</html>
|
||||
Reference in New Issue
Block a user