de Antonio Erdeljac

Aflați cum să gestionați autentificarea cu Node folosind Passport.js

Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Fotografie de Oskar Yildiz pe Unsplash

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
Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Rezultatul așteptat după executarea comenzii de mai sus

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.

1611772927 501 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Ar trebui să aveți acum această structură

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');
1611772927 19 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs

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.

1611772927 522 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Ar trebui să aveți acum această structură

Să conectăm „passport.js” la fișierul nostru „app.js”. Adăugați următoarea linie sub toate models:

require('./config/passport');
1611772928 977 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Necesitatea pașaportului trebuie să fie sub toate modelele

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.

1611772928 438 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Ar trebui să aveți acum această structură

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) ...

1611772928 88 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs
Ar trebui să aveți acum această structură

Să adăugăm folderul „rute” la „app.js”. Adăugați următoarea linie sub pașaportul nostru require:

app.use(require('./routes'));
1611772928 743 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs

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:

1611772929 434 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs

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.

1611772929 512 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs

Ș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:

1611772929 401 Aflati cum sa gestionati autentificarea cu Node folosind Passportjs

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
  • Linkedin

Vezi aplicația mea SwipeFeed.