de Antonio Erdeljac
Conţinut
Aflați cum să gestionați autentificarea cu Node folosind Passport.js
Sprijină-mă citind-o din sursa sa originală: SURSA ORIGINALĂ
În acest articol veți învăța cum să vă descurcați autentificare pentru serverul dvs. Node folosind Passport.js. Acest articol nu acoperă autentificarea Frontend. Utilizați acest lucru pentru a vă configura Autentificare backend (Generați token pentru fiecare utilizator și protejați rutele).
Ține minte că dacă rămâi blocat pe vreun pas, poți face referire la acest lucru Repo GitHub.
În acest articol vă voi învăța următoarele:
- Gestionarea rutelor protejate
- Manipularea jetoanelor JWT
- Gestionarea răspunsurilor neautorizate
- Crearea unui API de bază
- Crearea de modele și scheme
Introducere
Ce este Passport.js?
Passport este un middleware de autentificare pentru Node.js. Deoarece este extrem de flexibil și modular, Passport poate fi scăzut discret în orice Expres– aplicație web bazată pe. Un set cuprinzător de strategii acceptă autentificarea utilizând un numele de utilizator și parola, Facebook, Stare de nervozitate, și Mai Mult. Aflați mai multe despre Pașaport aici.
Tutorial
Crearea serverului nostru de noduri de la zero
Creați un director nou cu acest „app.js” fișier în interior:
Vom instala nodemon pentru o dezvoltare mai ușoară.
și apoi vom rula „app.js” cu acesta.
$ nodemon app.js
Crearea modelului de utilizator
Creați un folder nou numit „modele”, și creați fișierul „Users.js” în acel folder. Aici vom defini „UsersSchema”. Vom folosi JWT
și Crypto
a genera hash
și salt
din cele primite password
şir. Aceasta va fi folosită ulterior pentru validarea utilizatorului.
Să adăugăm modelul nou creat la „app.js”.
Adăugați următoarea linie în fișierul „app.js” după configurare Mongoose
:
require('./models/Users');
Configurați pașaportul
Creați un nou folder „config” cu fișierul „passport.js” în interiorul său:
În acest fișier, folosim metoda validatePassword
pe care le-am definit în User model
. Pe baza rezultatului, returnăm o ieșire diferită de cea a Pașaportului LocalStrategy
.
Să conectăm „passport.js” la fișierul nostru „app.js”. Adăugați următoarea linie sub toate models
:
require('./config/passport');
Trasee și opțiuni de autentificare
Creați un folder nou numit „rute” cu fișierul „auth.js” în interiorul său.
În acest fișier folosim funcția getTokenFromHeaders
a primi o Jeton JWT care va fi trimis de la partea clientului în antetele cererii. De asemenea, creăm un auth
obiect cu optional
și required
proprietăți. Le vom folosi mai târziu în traseele noastre.
În același folder „rute” creați un fișier „index.js”:
Acum avem nevoie de un dosar „api” în dosarul „rute”, cu un alt fișier „index.js” în interiorul său.
Acum, să creăm fișierul „users.js” de care avem nevoie în „api / index.js”.
În primul rând, vom crea un autentificare opțională traseu ‘/’
care va fi folosit pentru crearea unui nou model (registru).
router.post('/', auth.optional, (req, res, next) ...
După aceea, vom crea un altul autentificare opțională traseu ‘/login’
. Aceasta va fi utilizată pentru a activa configurația pașaportului și a valida o parolă primită prin e-mail.
router.post('/login', auth.optional, (req, res, next) ...
În cele din urmă, vom crea un autoritate necesară ruta, care va fi utilizată pentru a returna utilizatorul conectat în prezent. Doar utilizatorii conectați (utilizatorii care au semnul trimis cu succes prin antetele cererii) au acces la această rută.
router.get('/current', auth.required, (req, res, next) ...
Să adăugăm folderul „rute” la „app.js”. Adăugați următoarea linie sub pașaportul nostru require
:
app.use(require('./routes'));
Testarea traseului
Voi folosi Poştaş pentru a trimite cereri către serverul nostru.
Serverul nostru acceptă următorul corp:
{
"user": {
"email": String,
"password": String
}
}
Crearea unei cereri POST pentru a crea un utilizator
Corpul testului:
Raspuns:
{
"user": {
"_id": "5b0f38772c46910f16a058c5",
"email": "erdeljac.antonio@gmail.com",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImVyZGVsamFjLmFudG9uaW9AZ21haWwuY29tIiwiaWQiOiI1YjBmMzg3NzJjNDY5MTBmMTZhMDU4YzUiLCJleHAiOjE1MzI5MDgxNTEsImlhdCI6MTUyNzcyNDE1MX0.4TWc1TzY6zToHx_O1Dl2I9Hf9krFTqPkNLHI5U9rn8c"
}
}
Acum vom folosi acest token și îl vom adăuga la „Headers” în configurația Postman.
Și acum să le testăm pe ale noastre numai de autentificare traseu.
Crearea unui Solicitați GET pentru a returna utilizatorul conectat în prezent
Adresa URL a solicitării:
GET http://localhost:8000/api/users/current
Raspuns:
{
"user": {
"_id": "5b0f38772c46910f16a058c5",
"email": "erdeljac.antonio@gmail.com",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImVyZGVsamFjLmFudG9uaW9AZ21haWwuY29tIiwiaWQiOiI1YjBmMzg3NzJjNDY5MTBmMTZhMDU4YzUiLCJleHAiOjE1MzI5MDgzMTgsImlhdCI6MTUyNzcyNDMxOH0.5UnA2mpS-_puPwwxZEb4VxRGFHX6qJ_Fn3pytgGaJT0"
}
}
Să încercăm să o facem fără jeton în „Headers”.
Raspuns:
Sfarsit
Vă mulțumim că ați parcurs acest tutorial. Dacă observați erori, vă rugăm să mi le raportați. Dacă ai rămas blocat pe vreun pas, va rog, referiti-va la această repo GitHub.
Puteți să mă contactați prin:
- erdeljac DOT antonio AT gmail.com
Vezi aplicația mea SwipeFeed.
#Aflați #cum #să #gestionați #autentificarea #Node #folosind #Passportjs
Aflați cum să gestionați autentificarea cu Node folosind Passport.js