feat(auth): Implementazione completa sistema autenticazione

BREAKING CHANGE: Tutte le pagine ora richiedono autenticazione

Nuove funzionalità:
- Sistema di login con password hardcoded (admin123)
- Form di login full-screen con gradiente viola
- Protezione automatica di tutte le route
- Pulsante logout visibile in tutte le pagine
- Gestione thread-safe eventi autenticazione con InvokeAsync()

Componenti:
- AuthenticationService: servizio Singleton per gestione stato
- Login.razor: pagina login con validazione e messaggi errore
- App.razor: routing condizionale basato su autenticazione
- MainLayout.razor: pulsante logout integrato

Fix tecnici:
- Risolto errore "Dispatcher not associated" usando InvokeAsync()
- Implementato pattern corretto per eventi cross-thread in Blazor Server
- Aggiunto Dispose per prevenire memory leak
This commit is contained in:
Alessio Dal Santo
2025-10-08 17:58:46 +02:00
parent 960166be9f
commit 22c0a15b8e
10 changed files with 1043 additions and 14 deletions
+19 -2
View File
@@ -1,4 +1,6 @@
@inherits LayoutComponentBase
@using Data_Coupler.Services
@inject IAuthenticationService AuthService
@inherits LayoutComponentBase
<PageTitle>Data_Coupler</PageTitle>
@@ -9,7 +11,9 @@
<main>
<div class="top-row px-4">
<a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
<button class="btn btn-outline-danger btn-sm logout-button" @onclick="Logout">
<i class="oi oi-account-logout"></i> Logout
</button>
</div>
<article class="content px-4">
@@ -17,3 +21,16 @@
</article>
</main>
</div>
<style>
.logout-button {
float: right;
}
</style>
@code {
private void Logout()
{
AuthService.Logout();
}
}