Copertina episodio: ๐—”๐˜‚๐˜๐—ฒ๐—ป๐˜๐—ถ๐—ฐ๐—ฎ๐˜‡๐—ถ๐—ผ๐—ป๐—ฒ, ๐—ฟ๐˜‚๐—ผ๐—น๐—ถ ๐—ฒ ๐—ฎ๐—ฐ๐—ฐ๐—ฒ๐˜€๐˜€๐—ผ ๐—ฎ๐—น๐—นโ€™๐—ฎ๐—ฟ๐—ฒ๐—ฎ ๐—ฎ๐—ฑ๐—บ๐—ถ๐—ป

๐—”๐˜‚๐˜๐—ฒ๐—ป๐˜๐—ถ๐—ฐ๐—ฎ๐˜‡๐—ถ๐—ผ๐—ป๐—ฒ, ๐—ฟ๐˜‚๐—ผ๐—น๐—ถ ๐—ฒ ๐—ฎ๐—ฐ๐—ฐ๐—ฒ๐˜€๐˜€๐—ผ ๐—ฎ๐—น๐—นโ€™๐—ฎ๐—ฟ๐—ฒ๐—ฎ ๐—ฎ๐—ฑ๐—บ๐—ถ๐—ป

Sito web personale โ€” Da 0 a Deploy ยท Episodio 4 ยท 04 giugno 2026

In questo episodio racconto come il sito ha iniziato a distinguere chi puรฒ solo leggere da chi puรฒ gestire i contenuti. Attraverso il linguaggio naturale ho descritto ruoli, permessi, login, password protette e accesso admin. Lโ€™AI ha tradotto questa logica in un sistema di autenticazione con JWT, bcrypt, cookie sicuri e middleware di controllo.

Ogni sistema digitale che gestisce contenuti deve rispondere a tre domande fondamentali:

๐—–๐—ต๐—ถ ๐˜€๐—ฒ๐—ถ?

๐—–๐—ผ๐˜€๐—ฎ ๐—ฝ๐˜‚๐—ผ๐—ถ ๐—ณ๐—ฎ๐—ฟ๐—ฒ?

๐—–๐—ผ๐—บ๐—ฒ ๐—น๐—ผ ๐—ฑ๐—ถ๐—บ๐—ผ๐˜€๐˜๐—ฟ๐—ถ๐—ฎ๐—บ๐—ผ?

Nel quarto episodio della serie โ€œDa 0 a Deployโ€ racconto come รจ nato il sistema di ๐—ฎ๐˜‚๐˜๐—ฒ๐—ป๐˜๐—ถ๐—ฐ๐—ฎ๐˜‡๐—ถ๐—ผ๐—ป๐—ฒ del mio sito web: la parte che permette di distinguere un semplice visitatore da un amministratore.

Fino a quel momento il sito aveva giร  una struttura, un database e diverse sezioni pronte per essere alimentate: articoli, eventi, esperienze, formazione, newsletter, messaggi e profilo.

Mancava perรฒ un passaggio fondamentale: stabilire ๐—ฐ๐—ต๐—ถ ๐—ฝ๐—ผ๐˜๐—ฒ๐˜€๐˜€๐—ฒ ๐—บ๐—ผ๐—ฑ๐—ถ๐—ณ๐—ถ๐—ฐ๐—ฎ๐—ฟ๐—ฒ ๐—ฐ๐—ผ๐˜€๐—ฎ.

Perchรฉ un sito dinamico non รจ solo un insieme di pagine. รˆ un sistema in cui alcune persone leggono, altre interagiscono e qualcuno deve poter gestire i contenuti in modo sicuro.

La logica iniziale era semplice: io sono lโ€™๐—ฎ๐—ฑ๐—บ๐—ถ๐—ป e posso creare, modificare e cancellare i contenuti. Gli altri utenti possono leggere, iscriversi alla newsletter, inviare messaggi dal form contatti e interagire con le sezioni pubbliche.

Questa distinzione รจ il cuore di due concetti fondamentali:

๐—”๐˜‚๐˜๐—ฒ๐—ป๐˜๐—ถ๐—ฐ๐—ฎ๐˜‡๐—ถ๐—ผ๐—ป๐—ฒ: chi sei?

๐—”๐˜‚๐˜๐—ผ๐—ฟ๐—ถ๐˜‡๐˜‡๐—ฎ๐˜‡๐—ถ๐—ผ๐—ป๐—ฒ: cosa sei autorizzato a fare?

Ho descritto questa logica allโ€™AI in linguaggio naturale, chiedendo di implementare un sistema completo con registrazione, login, password protette, token di sessione, logout e controllo degli accessi alle aree riservate.

La richiesta era chiara: le pagine pubbliche dovevano restare accessibili a tutti, mentre lโ€™area admin e le operazioni di modifica dovevano essere protette.

Da questa descrizione sono stati generati diversi componenti tecnici: ๐—๐—ช๐—ง per gestire i token di autenticazione, ๐—ฏ๐—ฐ๐—ฟ๐˜†๐—ฝ๐˜ per proteggere le password, ๐—ฐ๐—ผ๐—ผ๐—ธ๐—ถ๐—ฒ ๐—ต๐˜๐˜๐—ฝ๐—ข๐—ป๐—น๐˜† per rendere piรน sicura la sessione e un ๐—บ๐—ถ๐—ฑ๐—ฑ๐—น๐—ฒ๐˜„๐—ฎ๐—ฟ๐—ฒ per controllare se lโ€™utente fosse autorizzato ad accedere alle rotte riservate.

Il punto interessante รจ che non sono partito dal codice.

Sono partito dalla logica organizzativa: chi entra, cosa vede, cosa puรฒ modificare e cosa invece deve rimanere protetto.

Uno dei momenti piรน concreti del progetto รจ stato il primo accesso come admin. Fino a quel momento il sito era qualcosa che stava prendendo forma: pagine, database, contenuti demo e struttura generale.

Ma quando ho effettuato il login e ho visto comparire il pannello di controllo, il progetto ha cambiato natura.

Non era piรน solo un sito visibile online.

Era un sistema ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ถ๐˜€๐˜๐—ฟ๐—ฎ๐—ฏ๐—ถ๐—น๐—ฒ.

Da quel momento potevo gestire articoli, eventi, contenuti, newsletter, messaggi e informazioni personali direttamente dal browser.

Naturalmente, anche qui non รจ stato tutto lineare. Dopo il primo login, alcune pagine admin si caricavano correttamente, ma alcune operazioni restituivano un errore di autorizzazione.

Il problema era nel modo in cui il sistema cercava il token di autenticazione: il login lo salvava in un cookie, mentre il middleware lo cercava nellโ€™header Authorization.

In pratica, il sito sapeva che avevo fatto login, ma alcune funzioni protette non riuscivano a riconoscermi correttamente come admin.

La soluzione รจ arrivata descrivendo il problema allโ€™AI: il middleware doveva leggere il JWT dal cookie chiamato token, non dallโ€™header Authorization. Dopo la correzione, il sistema ha iniziato a riconoscere correttamente lโ€™utente autenticato e il ruolo admin.

La lezione principale di questo episodio รจ che la ๐˜€๐—ถ๐—ฐ๐˜‚๐—ฟ๐—ฒ๐˜‡๐˜‡๐—ฎ non nasce solo dal codice. Nasce prima di tutto da una buona definizione delle regole.

Prima ancora di parlare di token, cookie o middleware, bisogna chiarire chi puรฒ entrare, quali azioni puรฒ compiere, quali sezioni devono essere pubbliche, quali devono essere riservate e cosa accade quando qualcuno prova ad accedere senza permesso.

Queste sono decisioni di ๐—ด๐—ผ๐˜ƒ๐—ฒ๐—ฟ๐—ป๐—ฎ๐—ป๐—ฐ๐—ฒ del sistema.

Lโ€™AI puรฒ generare la soluzione tecnica, ma la responsabilitร  delle regole resta umana. Sono io che devo decidere chi puรฒ fare cosa. Sono io che devo verificare se il comportamento del sistema รจ coerente con lโ€™obiettivo.

Questo episodio รจ centrale perchรฉ mostra il momento in cui il sito diventa davvero governabile.

Un sito con database conserva informazioni.

Un sito con autenticazione decide chi puรฒ gestirle.

Ed รจ qui che un progetto smette di essere una semplice vetrina e inizia ad assomigliare a un vero prodotto digitale.

Resta aggiornato su AI, governance e trasformazione digitale

๐Ÿ“ฌ Esploriamo insieme AI e trasformazione digitale Condivido: - Riflessioni e articoli su governance e innovazione - Case study raccontati dal punto di vista pratico - Eventi e occasioni di confronto (online e offline) - Risorse utili che scopro lungo il cammino Una mail quando ho qualcosa di interessante da condividere. Niente vendite, solo contenuti.

Riceverai un'email per confermare la tua iscrizione.

โ† Torna agli episodi