This course was created with the
course builder. Create your online course today.
Start now
Create your course
with
Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Maestro Node. Da zero ad esperto
Sezione introduttiva
Benvenuto (1:01)
Introduzione (4:57)
Architettura di Node (4:56)
Installazione di Node (2:02)
Il nostro primo script (3:04)
Node Module System
Introduzione (3:05)
Creare un modulo (4:06)
Importare da un modulo (3:45)
Module Wrapper Function (4:07)
Utilizzare i moduli nativi di Node (3:56)
Moduli di terze parti (1:12)
NPM (Node Package Manager)
Introduzione e inizializzazione npm (2:16)
Installazione pacchetto npm (2:57)
Utilizzo pacchetto npm Validator (4:23)
package.json e versionamento semantico (3:31)
Installare versione specifica pacchetto (6:07)
Dipendenze pacchetti (1:47)
Rimozione di un pacchetto (0:54)
Installazione pacchetto in devDependencies (1:51)
Nodemon (3:47)
Nodemon estensioni (3:20)
npm run start (1:48)
Realizzare una applicazione a linea di comando
Introduzione (1:27)
Impostazioni progetto e creazione file clienti.json (2:12)
Chalk (3:15)
Elencare argomenti e flag passati a linea di comando con process (3:01)
Introduzione a yargs (3:31)
yargs command (prima parte) (4:38)
Ricercare un cliente (6:30)
Ricercare un cliente (seconda parte) (4:58)
Aggiungere un cliente (6:00)
Rimuovere un cliente (6:34)
Refactoring applicazione (9:12)
Eventi
Introduzione (4:42)
EventEmitter (4:55)
Emit e on su singola istanza EventEmitter (prima parte) (5:05)
Emit e on su singola istanza EventEmitter (seconda parte) (4:43)
Definire listener multipli per un singolo evento (1:50)
Metodi di EventEmitter (5:56)
Modulo fs
Introduzione (0:50)
Lettura asincrona da un file con readFile (4:07)
Gestione errore readFile (5:19)
fsPromise.readFile (5:03)
Scrivere in modo asincrono in un file con fs.writeFile e fs.promises.writeFile (4:23)
Aprire un file con open e File Descriptor (6:06)
Leggere un file attraverso gli stream (4:39)
Ottenere informazioni su un file con stat e fstat (5:05)
Elencare il contenuto di una cartella (5:19)
Elencare file e cartelle con recursive-readdir (6:07)
Monitorare cambiamenti nel filesystem con fs.watch (prima parte) (3:55)
Monitorare cambiamenti nel filesystem con fs.watch (seconda parte) (3:56)
chokidar - fs.watch wrapper (4:36)
Modulo url e http
Introduzione (1:26)
Classe URL (3:38)
URLSearchParams (5:06)
Applicazione client-server con Node (4:00)
Introduzione al modulo http (5:55)
process.env.PORT (4:07)
Inviare una risposta al client con res.write e res.end (6:33)
writeHead (2:47)
Definiamo le rotte dell'applicazione e meccanismo di routing (6:00)
Migliorariamo il meccanismo di routing (prima parte) (9:55)
Mappare le richieste a file html con un oggetto (6:18)
request.method (2:59)
Il Framework Express
Installazione e importazione express (6:00)
Richieste http POST, PUT e DELETE (8:59)
Gestire rotte multiple con array ed espressioni regolari (6:28)
app.get e app.set (5:32)
Gestire parametri di rotta e query string (4:07)
Introduzione alla funzioni middleware (prima parte) (3:09)
Introduzione alla funzioni middleware (seconda parte) (5:48)
Middleware multiple in un metodo di rotta (8:17)
Montare le middleware con app.use (6:16)
Middleware built-in (5:18)
Fornire file statici con express.static() (5:21)
Middleware di terza parti (morgan) (9:12)
Modularizzazione e strutturazione applicazione (introduzione) (4:51)
Modularizzare le funzioni middleware (2:47)
Modularizzazione e strutturazione applicazione (8:16)
Definire un mount path per le rotte (1:21)
Error Handling (prima parte) (4:49)
Gestire gli errori tramite middleware custom (3:01)
Error Handling avanzato (prima parte) (8:25)
res.download e res.redirect (5:42)
Refactoring (3:02)
Express e i Template Engine
Introduzione ai Template Engine (2:24)
Installazione e configurazione EJS (3:22)
Renderizzare singole variabili (4:19)
Renderizzare array (8:16)
Definire uno stile per i template (4:58)
Partials (6:24)
Configurazione e debug
Introduzione (5:10)
dotenv (4:02)
Configurazione cross environment (5:08)
Override variabili d'ambiente già definite (3:28)
File .env e commit su VCS (1:40)
Debug applicazione (7:09)
Il database MongoDB
Introduzione (2:52)
Introduzione a MongoDB (3:04)
MongoDB Atlas vs installzione locale (5:21)
Esempio con MySQL (7:16)
Configurazione e connessione a MongoDB Atlas (6:59)
Operazioni CRUD con MongoDB (introduzione) (4:15)
Operazioni CRUD con MongoDB - Create (8:26)
Operazioni CRUD con MongoDB - Read (8:57)
Operazioni CRUD con MongoDB (Update) (9:06)
Operazioni CRUD con MongoDB (Delete) (5:04)
MongoDB metodi e query
Ordinare e limitare i risultati di una query (10:06)
Operatori di confronto (query operator) (8:22)
Operatori logici (query operator) (7:30)
Ricercare documenti in base all'esistenza di un campo (3:55)
Operatore $regex (query operator) (7:24)
Rimuovere un campo con l'operatore $unset (2:51)
Operatore di incremento $inc (2:58)
Aggiungere e rimuovere elementi da un campo di tipo array (4:36)
MongoDB ed Express
Introduzione (1:44)
Classe MongoConnect (6:40)
Connessione al database (3:46)
Riutilizzo connessione nei router (5:14)
Integrare MongoDB con Express e con i Template Engine (prima parte) (6:16)
Integrare MongoDB con Express e con i Template Engine (seconda parte) (6:49)
Crittografia e JWT per la sicurezza dell'applicazione
Introduzione (1:11)
Cenni storici sulla crittografia (3:50)
Crittografia simmetrica (4:30)
Crittografia Asimmetrica (a chiave pubblica) (4:08)
Funzioni e algoritmi di hashing (10:13)
Sicurezza dell'applicazione (introduzione) (4:12)
Sicurezza applicazione (sessioni) (4:36)
Gestione sessioni con express-session e MongoDB (22:48)
JSON Web Token (introduzione) (9:55)
Creare un JWT con jsonwebtoken (9:16)
Inviare il token tramite cookie (7:08)
Validazione token e scadenza cookie (8:30)
Generazione chiave segreta sicura (2:48)
JWT con crittografia asimmetrica + openssl (7:09)
Proteggere le rotte con middleware (6:15)
Logout utente. Un problema meno semplice del previsto (5:01)
Refactoring gestione autenticazione (7:09)
Utilizzare il payload (6:58)
Protezione dagli attacchi CSRF (introduzione) (3:09)
Protezione dagli attacchi CSRF (simulazione attacco) (12:37)
Protezione dagli attacchi CSRF (contromisura sameSite) (8:45)
Protezione dagli attacchi CSRF (csrf token) (1:39)
Protezione CSRF con csurf (10:47)
JWT vs sessioni, OAuth, OpenID Connect
Introduzione (3:37)
Problema logout (4:45)
Vulnerabilità (2:11)
npm audit (4:09)
Cookie o Local Storage per memorizzare il JWT? (3:12)
JWT e sessioni allo scalare dell'applicazione (3:47)
Crittografia simmetrica o asimmetrica per una infrastruttura multiserver? (4:41)
Allora JWT o sessioni? (2:41)
Autenticazione, autorizzazione e autorizzazione delagata (3:08)
Autorizzazione delegata con OAuth 2.0 - Introduzione (3:06)
Autorizzazione delegata con OAuth 2.0 - Terminologia (3:02)
Autorizzazione delegata con OAuth 2.0 - Flusso (6:19)
OpenID Connect (OIDC) (3:53)
Passport.js
Introduzione (4:48)
Local Strategy - inizializzazione progetto (9:04)
Local Strategy - creazione form login (6:40)
Local Strategy - impementiamo la strategia (16:40)
Local Stratey - implementiamo la strategia (seconda parte) (4:53)
Local Stratey - protezione delle rotte (6:39)
Local Stratey - logout (2:48)
Local Strategy - recuperare i dati dell'utente con req.user (2:47)
Local Strategy - flash message (8:47)
Verifica dati di autenticazione (4:55)
Diamo uno stile al form [EXTRA] (16:42)
Google Login con Passport.js
Introduzione (12:25)
Modifica template login.ejs (5:36)
Otteniamo il codice di autorizzazione in front channel (12:42)
Otteniamo token ID e access token (6:29)
Registrazione utente nel database (12:55)
Local Stratey - logout
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock