Nelle lezioni precedenti,
abbiamo visto varie strategie per l'autenticazione degli utenti.
Abbiamo iniziato con l'autenticazione di base, per
poi passare ai cookie e alle sessioni express
come un modo per autenticare e tracciare gli utenti.
In questa lezione vedremo Passport,
un modulo nodo che rende l'autenticazione abbastanza semplice
, discreto e semplice da configurare nella vostra applicazione.
Passport non è altro che un middleware di autenticazione che supporta
varie strategie che possono essere utilizzate per l'autenticazione dell'utente,
inclusa una strategia locale come l'uso di nome utente e password,
o anche l'autenticazione di terze parti o l'utilizzo di OAuth o OAuth 2.0,
come l'utilizzo di Facebook, Twitter,
o Google+ e così via.
Vedremo alcuni dettagli su Passport,
l'autenticazione locale supportata Passport.
E nell'esercizio che segue,
aggiorneremo la nostra applicazione per fare uso di
moduli Passport e Passport Local Node per abilitare.
autenticazione locale utilizzando nome utente e password.
Quindi, come ho detto un po 'prima,
Passport è un middleware di autenticazione molto utile per le applicazioni Node.js.
Rende più semplice implementare l'autenticazione.
Come abbiamo visto negli esercizi precedenti,
l'autenticazione comporta un sacco di codice ripetitivo e attività ripetitive che gestiscono gli errori
e progettano modi di controllare
l'autenticazione dell'utente e quindi autenticare l'utente e così via.
Tutto questo è semplificato all'interno di Passport utilizzando
varie strategie che possono essere utilizzate per autenticare gli utenti.
È possibile utilizzare una strategia locale, ad esempio, che si basa sulla
registrazione degli utenti nel sistema utilizzando un nome utente e una password,
e quindi in seguito autenticarli utilizzando il nome utente e la password.
Passport supporta anche l'autenticazione basata su OpenID
o l'autenticazione basata su OAuth o OAuth 2.0,
come è supportata da autenticatori di terze parti come Facebook
, Twitter, Google+ e così via.
Possiamo anche usare ciò che viene chiamato come
token web JSON come un altro modo di autenticazione chiamato autenticazione basata su token.
Esamineremo l'autenticazione basata su token nella parte successiva di questa lezione.
Inoltre, Passport supporta le sessioni.
Come abbiamo visto nell'esercizio precedente e nella lezione precedente,
le sessioni express sono un modo semplice per tenere traccia degli utenti
sul lato server e di essere in grado di soddisfare le richieste in arrivo dai client.
Per utilizzare Passport, ovviamente,
installeremo il modulo Passport.
Nell' esercizio seguente verrà inoltre
installato il modulo Passport-Local per
fornire la strategia locale per l'autenticazione dell'utente.
L' uso di Passport all'interno della nostra applicazione è abbastanza semplice.
Sulle route su cui si desidera eseguire l'autenticazione, è
sufficiente specificare l'autenticazione passaporto e quindi specificare
la strategia di autenticazione specifica che si desidera utilizzare per l'autenticazione utente.
Come esempio qui,
si vede che stiamo applicando
un'autenticazione locale dicendo passaporto autenticazione e locale.
E quindi utilizza la strategia locale per autenticare gli utenti.
Se l'autenticazione ha esito positivo,
il middleware passa al passaggio successivo,
dove possiamo elaborare ulteriormente la richiesta in arrivo.
Pertanto, al termine dell'autenticazione corretta del passaporto utente,
Passport stesso aggiunge una proprietà utente al messaggio di richiesta.
Così req.user diventa disponibile per noi con le informazioni dell'utente in là,
che possiamo successivamente utilizzare all'interno della
nostra applicazione espressa per gestire la richiesta proveniente da utenti specifici.
Quindi questo ci aiuta facilmente a identificare quale cliente ha inviato la richiesta alla
nostra applicazione e di conseguenza a soddisfare
la richiesta in base all'identità dell'utente.
Insieme a Passport, installeremo
un altro modulo relativo Passport chiamato Passport-Local.
Passport-Local supporta una strategia chiamata come
strategia locale per l'autenticazione degli utenti
con la combinazione di password nome utente standard.
Quindi impostiamo lo schema utente,
come abbiamo fatto prima,
e quindi usiamo lo schema utente o il modello per tenere traccia del nome utente e della
password e quindi Passport-Local dipende da questo per verificare il nome utente e la password.
Quindi, per installarlo di nuovo,
essendo un modulo nodo,
lo installiamo utilizzando la procedura standard per l'installazione del modulo Passport-Local Node.
Una volta che il modulo Passport-Local Node è installato,
allora abbiamo bisogno di specificare la strategia locale e come viene effettivamente utilizzato all'interno di Passport.
Quindi, per specificare una strategia locale, diremo;
passport.use, e quindi questo ci permetterà di specificare la strategia locale da utilizzare.
Quindi, dopo aver installato il Passport-Local,
dichiareremo una nuova strategia locale e quindi forniremo
la corrispondente funzione di verifica che viene utilizzata per verificare l'utente.
Se stai usando un MongoDB come negozio back-end, quindi,
per aiutarci con la strategia Passport-Local,
c'è un altro modulo chiamato come Passport-Local Mongoose.
Il modulo Passport-Local Mongoose fornisce
un plugin Mongoose che semplificherà il nome utente e la password di accesso.
Installando il plugin Passport-Local Mongoose e
utilizzandolo quando definiamo lo schema utente e il modello,
e quindi utilizzando il supporto del modulo Passport-Local Mongoose,
questo plugin mangusta aggiunge il nome utente e
un modo crittografato di memorizzare la password all'interno del nostro utente modello.
La crittografia viene eseguita utilizzando l'hashing
sulla password che usiamo per registrare gli utenti,
e l'hash stesso utilizza un campo salt.
Quindi, se sai qualcosa sulla crittografia, nella crittografia,
il sale è una stringa casuale che viene utilizzata per eseguire
l'operazione di hashing sulla password per la memorizzazione.
Quindi la password hash è di per sé memorizzata nel nostro database MongoDB.
La password effettiva non è memorizzata.
Quindi, quando l'utente tenta di autenticarsi usando il nome utente e
la password, la password verrà nuovamente hash e poi confrontata con
le password hash memorizzate nel nostro database e questo è
tutto fornito dal plugin Mongoose, il Passport-Local Mongoose.
Inoltre, Passport-Local Mongoose aggiunge anche metodi aggiuntivi che
sono molto utili per configurare la strategia Passport-Local.
Così all'interno della nostra applicazione quando definiamo lo schema utente e il modello,
ci sarà importare il Passport-Local Mongoose e quindi aggiungere
come il plugin per lo schema utente.
Questo modulo Passport-Local Mongoose automaticamente
come ho detto aggiunge il campo nome utente e anche
un campo di archiviazione password hash utilizzando un valore salt che utilizza per fare l'hashing,
e fornisce anche metodi aggiuntivi che ci permettono di
configurare la nostra strategia Passport-Local.
Se stiamo usando il modulo Passport-Local Mongoose,
quindi la strategia locale,
il plugin Passport-Local Mongoose supporta
sul modello utente un metodo di autenticazione che farà automaticamente l'autenticazione.
Nella diapositiva precedente vi avevo mostrato come avremmo implementato la strategia locale.
Ora questo viene fornito automaticamente per te da Passport-Local Mongoose
semplicemente dicendo nuovo localstrategy user.authenticate.
Quindi non abbiamo bisogno di scrivere esplicitamente il codice di autenticazione per la strategia locale.
Inoltre, se si utilizzano sessioni supportate da Passport,
quindi, per le sessioni di supporto,
le informazioni dell'utente devono essere serializzate per
essere memorizzate con le informazioni sulla sessione sul lato server e quindi,
quando arriva la richiesta,
dall'ID di sessione,
le informazioni utente deve essere deserializzata per estrarre
le informazioni dell'utente dalle nostre informazioni di sessione che sono memorizzate sul lato server.
Ora questa
operazione di serializzazione e deserializzazione è già supportata da Passport-Local Mongoose attraverso
l'utente serialize e
i metodi utente deserialize che sono disponibili dal plugin Passport-Local Mongoose.
Così, dopo aver visto questo,
vedremo ora nell'esercizio come è facile configurare la
strategia locale per l'autenticazione degli utenti utilizzando
moduli Passport, Passport-Local, e Passport-Local Mongoose Node.