22c0a15b8e
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
37 lines
696 B
Plaintext
37 lines
696 B
Plaintext
@using Data_Coupler.Services
|
|
@inject IAuthenticationService AuthService
|
|
@inherits LayoutComponentBase
|
|
|
|
<PageTitle>Data_Coupler</PageTitle>
|
|
|
|
<div class="page">
|
|
<div class="sidebar">
|
|
<NavMenu />
|
|
</div>
|
|
|
|
<main>
|
|
<div class="top-row px-4">
|
|
<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">
|
|
@Body
|
|
</article>
|
|
</main>
|
|
</div>
|
|
|
|
<style>
|
|
.logout-button {
|
|
float: right;
|
|
}
|
|
</style>
|
|
|
|
@code {
|
|
private void Logout()
|
|
{
|
|
AuthService.Logout();
|
|
}
|
|
}
|