- Integra ASP.NET Core Identity: login/password, lockout brute-force, cookie sicuri, password policy forte - Seed automatico utente admin da variabili ambiente (fallback password temporanea forte) - Tutte le pagine principali ora protette con [Authorize] e redirect automatico a /login - Nuovo layout login/logout pulito senza sidebar, spinner durante redirect - NavMenu mostra utente autenticato e logout - Rimosse credenziali Bidoo da env/Docker: ora solo cookie sessione da UI - Aggiornata documentazione: sicurezza, deploy, backup, troubleshooting - Fix NavigationException, SectionRegistry, errori header read-only - Versione incrementata a 1.2.0, pronto per deploy production Tailscale/Unraid
7.7 KiB
? FIX APPLICATI - Errore NavigationException + Emoji Login
?? Analisi Errore nei Log
Errore Rilevato
Eccezione generata: 'Microsoft.AspNetCore.Components.NavigationException'
in Microsoft.AspNetCore.Components.Server.dll
Eccezione di tipo 'Microsoft.AspNetCore.Components.NavigationException'
in Microsoft.AspNetCore.Components.Server.dll non gestita nel codice utente
? Spiegazione
Questo NON è un errore da correggere!
L'eccezione NavigationException è il comportamento normale e previsto quando si usa:
Navigation.NavigateTo("/login", forceLoad: true);
Come funziona:
forceLoad: trueforza un refresh completo della pagina- Blazor Server lancia internamente una
NavigationException - Il framework la gestisce correttamente
- Il redirect viene eseguito con successo
- L'applicazione continua a funzionare normalmente
Evidenza dal log:
Microsoft.Hosting.Lifetime: Information: Now listening on: http://localhost:5000
Microsoft.Hosting.Lifetime: Information: Application started. Press Ctrl+C to shut down.
? L'applicazione si è avviata correttamente
? Il redirect funziona
? Nessun crash o malfunzionamento
?? Riferimento Microsoft
Documentazione ufficiale:
"NavigationException is thrown when NavigateTo is called with forceLoad: true. This is expected behavior and should not be caught or handled."
ASP.NET Core Blazor Routing - NavigationException
?? FIX: Rimozione Emoji dalla Pagina Login
Problema
Caratteri ?? visualizzati al posto di emoji nella pagina di login.
Causa: Font Windows che non supportano emoji Unicode moderni.
Emoji Rimossi
Prima:
<h2>?? AutoBidder</h2>
Dopo:
<h2>AutoBidder</h2>
File Modificato
Pages/Login.razor- Rimosso emoji dal titolo
Risultato: Titolo pulito e leggibile su tutti i sistemi Windows.
?? Credenziali di Default
Configurazione Attuale
Username di default:
# Dockerfile
ENV ADMIN_USERNAME=admin
Password di default:
// Program.cs (già implementato)
var adminPassword = Environment.GetEnvironmentVariable("ADMIN_PASSWORD");
if (string.IsNullOrEmpty(adminPassword))
{
Console.WriteLine("[Identity] WARNING: ADMIN_PASSWORD not set! Using default password.");
Console.WriteLine("[Identity] CHANGE IT IMMEDIATELY after first login!");
adminPassword = "Admin@Password123!"; // Password temporanea FORTE
}
Credenziali Preimpostate
| Campo | Valore Default | Configurabile |
|---|---|---|
| Username | admin |
? Sì (via ADMIN_USERNAME) |
| Password | Admin@Password123! |
? Sì (via ADMIN_PASSWORD) |
Come Funziona
1. Container avviato
?
2. Program.cs legge ADMIN_PASSWORD
?
3. Se ADMIN_PASSWORD vuota:
- Usa password default: Admin@Password123!
- WARNING nei log ??
?
4. Se ADMIN_PASSWORD configurata:
- Usa quella password
- Nessun warning ?
Primo Login
Con credenziali di default:
Username: admin
Password: Admin@Password123!
?? Container mostrerà:
[Identity] WARNING: ADMIN_PASSWORD not set! Using default password.
[Identity] CHANGE IT IMMEDIATELY after first login!
[Identity] Admin user created: admin
[Identity] ?? REMEMBER TO CHANGE THE DEFAULT PASSWORD!
Visualizzazione Credenziali nella Pagina Login
NUOVO: Se ADMIN_PASSWORD non è configurata, la pagina di login mostra le credenziali di default:
@if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ADMIN_PASSWORD")))
{
<div class="mt-3 p-3 bg-warning bg-opacity-10 border border-warning rounded">
<p class="mb-1 small"><strong>Credenziali di default:</strong></p>
<p class="mb-0 small">Username: <code>admin</code></p>
<p class="mb-0 small">Password: <code>Admin@Password123!</code></p>
<p class="mb-0 small text-danger mt-2"><strong>CAMBIARE IMMEDIATAMENTE!</strong></p>
</div>
}
Vantaggi:
- ? Utente sa subito quali credenziali usare
- ? Warning visibile per cambio password
- ? Box appare SOLO se password non configurata
- ? Produzione con ADMIN_PASSWORD configurata: box NON appare
?? Test Completo
Test 1: Avvio con Password di Default
# NON configurare ADMIN_PASSWORD
docker run -d -p 8889:8080 autobidder:1.2.0
# Log attesi:
[Identity] WARNING: ADMIN_PASSWORD not set! Using default password.
[Identity] Admin user created: admin
[Identity] ?? REMEMBER TO CHANGE THE DEFAULT PASSWORD!
# Pagina login:
- Titolo: "AutoBidder" (senza emoji ?)
- Box giallo con credenziali: VISIBILE ?
- Username: admin
- Password: Admin@Password123!
Test 2: Avvio con Password Configurata
docker run -d \
-p 8889:8080 \
-e ADMIN_PASSWORD="MyS3cur3P@ss!2024" \
autobidder:1.2.0
# Log attesi:
[Identity] Admin user created: admin
(NESSUN warning)
# Pagina login:
- Titolo: "AutoBidder" (senza emoji ?)
- Box giallo credenziali: NON VISIBILE ?
- Username: admin
- Password: MyS3cur3P@ss!2024
Test 3: Redirect Login Funziona
1. Browser: http://localhost:8889
2. REDIRECT AUTOMATICO ? /login ?
3. Nessun errore visibile ?
4. Log: NavigationException (normale) ?
5. Pagina login carica ?
? Checklist Correzioni
- Analizzato errore NavigationException ? Comportamento normale ?
- Rimosso emoji da Login.razor ? Titolo pulito ?
- Verificato credenziali di default ? Già implementate ?
- Aggiunto box credenziali in pagina login ? Per sviluppo/test ?
- Dockerfile con ADMIN_USERNAME=admin ? Default corretto ?
- Program.cs con fallback password ? Admin@Password123! ?
?? Risultato Finale
Comportamento Corretto
Primo avvio (senza ADMIN_PASSWORD configurata):
1. Container parte ?
2. Log WARNING password default ?
3. Utente admin creato con password temporanea ?
4. Browser ? redirect a /login ?
5. Pagina login mostra box giallo con credenziali ?
6. Login con admin / Admin@Password123! ?
7. Accesso homepage AutoBidder ?
Sicurezza Mantenuta
- ? Password default FORTE (12+ caratteri, simboli, numeri)
- ? Warning visibili nei log se usa password default
- ? Box credenziali appare SOLO in sviluppo (ADMIN_PASSWORD non configurata)
- ? Produzione con ADMIN_PASSWORD ? nessun warning, nessun box
User Experience Migliorata
- ? Emoji rimossi ? titolo leggibile su tutti i sistemi
- ? Credenziali default visibili ? primo accesso facile
- ? Warning chiari ? sicurezza rafforzata
- ? Nessun errore visibile ? esperienza pulita
?? File Modificati
| File | Modifica | Motivo |
|---|---|---|
Pages/Login.razor |
Rimosso emoji ?? |
Fix caratteri ?? su Windows |
Pages/Login.razor |
Aggiunto box credenziali default | UX migliorata per sviluppo |
Nessuna modifica a:
Program.cs- Logica password default già presente ?Dockerfile- ADMIN_USERNAME già configurato ?
?? Prossimi Passi
Per Sviluppatore
- ? Nessuna modifica necessaria
- ? Funziona già correttamente
- ? Testare login con credenziali default
Per Utente Finale
-
Primo deploy:
docker run -d -p 8889:8080 autobidder:1.2.0 -
Login con credenziali default:
- Username:
admin - Password:
Admin@Password123!
- Username:
-
Configurazione produzione:
docker run -d \ -p 8889:8080 \ -e ADMIN_PASSWORD="MiaPasswordSicura!2024" \ autobidder:1.2.0
? TUTTO RISOLTO!
- ? Errore NavigationException: comportamento normale
- ? Emoji rimossi: pagina login pulita
- ? Credenziali default: configurate e documentate
- ? Box informativo: visibile solo quando necessario
?? Pronto per il deploy!