Files
Data-Coupler/TEST_LOGIN.md
T
Alessio Dal Santo 22c0a15b8e 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
2025-10-08 17:58:46 +02:00

4.7 KiB

Test del Sistema di Login

Test Eseguiti

Compilazione

  • L'applicazione compila senza errori
  • Tutti i componenti sono stati creati correttamente
  • Le dipendenze sono state configurate

🔍 Componenti Verificati

1. AuthenticationService.cs

 Servizio registrato come Singleton
 Password hardcoded: "admin123"
 Eventi di cambio stato implementati
 Metodi Login() e Logout() funzionanti

2. Login.razor

✓ Pagina di login a schermo intero
✓ Design moderno con gradiente
✓ Form con validazione
✓ Messaggi di errore visualizzati
✓ Redirect dopo login riuscito

3. App.razor

✓ Controllo autenticazione al root
✓ Mostra Login se non autenticato
✓ Mostra Router se autenticato
✓ Event listener per cambio stato
✓ Dispose corretto per evitare memory leak

4. MainLayout.razor

✓ Pulsante Logout aggiunto in alto a destra
✓ Icona e stile corretto
✓ Chiamata a AuthService.Logout()

Credenziali di Accesso

Password predefinita: admin123

Come Testare Manualmente

Test 1: Login Corretto

  1. Avviare l'applicazione con il task "Test Database Initialization"
  2. Aprire il browser all'indirizzo mostrato nel terminale (es. http://localhost:7550)
  3. Dovrebbe apparire la pagina di login a tutto schermo
  4. Inserire password: admin123
  5. Cliccare su "Accedi"
  6. Risultato atteso: Reindirizzamento alla pagina DataCoupler

Test 2: Login Errato

  1. Dalla pagina di login
  2. Inserire una password errata (es. "password123")
  3. Cliccare su "Accedi"
  4. Risultato atteso: Messaggio di errore rosso "Password non corretta"

Test 3: Protezione Pagine

  1. Senza essere loggati, provare ad accedere direttamente a:
  2. Risultato atteso: Viene sempre mostrata la pagina di login

Test 4: Logout

  1. Effettuare il login
  2. Verificare di essere sulla pagina DataCoupler
  3. Cliccare sul pulsante "Logout" in alto a destra
  4. Risultato atteso: Torna alla pagina di login

Test 5: Navigazione da Autenticato

  1. Effettuare il login
  2. Navigare tra le varie pagine usando il menu laterale:
    • Data Coupler
    • Gestione Credenziali
    • Associazioni Chiavi
    • Gestione Profili
    • Schedulazione
    • Impostazioni
  3. Risultato atteso: Tutte le pagine sono accessibili e il pulsante Logout rimane visibile

Comportamento Speciale

Reindirizzamento da /login quando autenticato

  • Se un utente è già autenticato e prova ad accedere a /login
  • Viene automaticamente reindirizzato alla pagina principale /

Stato Autenticazione

  • Lo stato di autenticazione è mantenuto in memoria
  • Quando si chiude o si ricarica la pagina, l'autenticazione viene persa
  • Questo è il comportamento normale per Blazor Server senza persistenza

Note Tecniche

Servizio Singleton

Il servizio di autenticazione è registrato come Singleton, quindi:

  • Una sola istanza per tutta l'applicazione
  • Lo stato è condiviso tra tutti i componenti
  • Persiste per tutta la durata dell'esecuzione dell'applicazione

Eventi e Reattività

  • Il servizio emette eventi quando lo stato cambia
  • I componenti si sottoscrivono agli eventi
  • StateHasChanged() viene chiamato automaticamente per aggiornare la UI

Sicurezza

⚠️ Questa implementazione è per ambienti controllati:

  • Password in chiaro nel codice
  • Nessuna protezione contro brute force
  • Nessuna crittografia
  • Stato non persistente

Per produzione, considerare:

  • ASP.NET Core Identity
  • JWT Tokens
  • Cookie di autenticazione
  • HTTPS obbligatorio
  • Rate limiting

Personalizzazione Password

Per cambiare la password:

File: Data_Coupler\Services\AuthenticationService.cs

Linea 11:

private const string HARDCODED_PASSWORD = "admin123";  // <-- Modificare qui

Esempio:

private const string HARDCODED_PASSWORD = "MiaSuperPassword!2024";

Dopo la modifica, ricompilare e riavviare l'applicazione.

Checklist Implementazione

  • Servizio di autenticazione creato
  • Password hardcoded configurata
  • Pagina di login creata e stilizzata
  • Form di login a tutto schermo
  • Validazione password implementata
  • Messaggi di errore visualizzati
  • Reindirizzamento post-login funzionante
  • Protezione delle pagine implementata
  • Pulsante logout aggiunto al MainLayout
  • Servizio registrato in Program.cs
  • Event handling per cambio stato
  • Dispose corretto implementato
  • Compilazione senza errori
  • Documentazione creata

Tutto Pronto!

Il sistema di login è completamente implementato e pronto per l'uso.

Avviare l'applicazione e testare con password: admin123