Sužinokite, kaip elgtis su „Node“ naudojant „Passport.js“

Palaikykite mane skaitydami iš pirminio šaltinio: ORIGINAL SOURCE

Šiame straipsnyje sužinosite, kaip tvarkyti „Node“ serverio autentifikavimą naudojant „ Passport.js“. Šis straipsnis neapima „Frontend“ autentifikavimo. Naudokite tai, kad sukonfigūruotumėte „ Backend“ autentifikavimą (sugeneruokite kiekvieno vartotojo žetoną ir apsaugokite maršrutus).

Atminkite, kad jei užstrigsite bet kuriame žingsnyje, galite kreiptis į šį „GitHub“ repo .

Šiame straipsnyje aš išmokysiu:

  • Tvarkyti saugomus maršrutus
  • JWT žetonų tvarkymas
  • Neteisėtų atsakymų tvarkymas
  • Pagrindinės API kūrimas
  • Kurti modelius ir schemas

Įvadas

Kas yra Passport.js?

„Passport“ yra „Node.js“ autentifikavimo tarpinė programa. Kadangi jis labai lankstus ir modulinis, „Passport“ galima nepastebimai išmesti į bet kurią „Express“ pagrįstą žiniatinklio programą. Išsamus strategijų rinkinys palaiko autentifikavimą naudojant vartotojo vardą ir slaptažodį, „Facebook“, „Twitter“ ir kt. Sužinokite daugiau apie „Passport“ čia.

Pamoka

Mūsų mazgo serverio kūrimas nuo nulio

Sukurkite naują katalogą naudodami šį „app.js“failas viduje:

Įdiegsime mazgą, kad būtų lengviau tobulinti.

tada paleisime su ja savo „app.js“.

$ nodemon app.js

Vartotojo modelio kūrimas

Sukurkite naują aplanką pavadinimu „modeliai“,ir sukurkite „Users.js“ failą tame aplanke.Čia mes apibrėžsime savo „UsersSchema“. Mes ketiname naudoti JWTir Cryptogeneruoti hashbei saltiš gautos passwordeilutės. Vėliau tai bus naudojama patvirtinant vartotoją.

Pridėkime naujai sukurtą modelį prie „app.js“.

Sukonfigūravę pridėkite šią eilutę prie failo „app.js“ Mongoose:

require('./models/Users');

Konfigūruokite pasą

Sukurkite naują aplanką „config“, kuriame yra „passport.js“ failas:

Šiame faile mes naudojame metodą, validatePasswordkurį mes apibrėžėmeUser model. Remdamiesi rezultatu, mes pateikiame skirtingą „Passport“ išvestį LocalStrategy.

Prijunkime „passport.js“ prie mūsų „app.js“ failo. Žemiau visų pridėkite šią eilutę models:

require('./config/passport');

Maršrutai ir autentifikavimo parinktys

Sukurkite naują aplanką, vadinamą „maršrutai“, o jame esantį failą „auth.js“.

Šiame faile mes naudojame funkciją getTokenFromHeadersgauti JWT raktas , kuris bus siunčiamas iš kliento pusės Į prašymą antraščių . Mes taip pat sukurti authsu objektu optionalir requiredskelbimus. Tai naudosime vėliau savo maršrutuose.

Tame pačiame aplanke „maršrutai“ sukurkite failą „index.js“:

Dabar aplanke „maršrutai“ reikia aplanko „api“, o jame - dar vienas failas „index.js“.

Dabar sukurkime failą „users.js“, kurio mums reikia „api / index.js“.

Pirmiausia, mes sukursime pasirinktinį autentifikavimo maršrutą, ‘/’kuris bus naudojamas kuriant naują modelį (registrą).

router.post('/', auth.optional, (req, res, next) ...

Po to ketiname sukurti dar vieną pasirinktinį autentifikavimo maršrutą ‘/login’. Tai bus naudojama norint suaktyvinti mūsų paso konfigūraciją ir patvirtinti gautą slaptažodį el. Paštu.

router.post('/login', auth.optional, (req, res, next) ...

Galiausiai sukursime reikalingą autentifikavimo maršrutą, kuris bus naudojamas grąžinant šiuo metu prisijungusį vartotoją. Tik prisijungę vartotojai (vartotojai, kurių žetonas sėkmingai išsiųstas per užklausos antraštes) turi prieigą prie šio maršruto.

router.get('/current', auth.required, (req, res, next) ...

Pridėkime aplanką „maršrutai“ į „app.js“.Po mūsų pasu pridėkite šią eilutę require:

app.use(require('./routes'));

Maršruto bandymai

Aš naudosiu paštininkąsiųsti užklausas į mūsų serverį.

Mūsų serveris priima šį turinį:

{ "user": { "email": String, "password": String } }

POST užklausos kūrimas norint sukurti vartotoją

Bandymo įstaiga:

Atsakymas:

{ "user": { "_id": "5b0f38772c46910f16a058c5", "email": "[email protected]", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImVyZGVsamFjLmFudG9uaW9AZ21haWwuY29tIiwiaWQiOiI1YjBmMzg3NzJjNDY5MTBmMTZhMDU4YzUiLCJleHAiOjE1MzI5MDgxNTEsImlhdCI6MTUyNzcyNDE1MX0.4TWc1TzY6zToHx_O1Dl2I9Hf9krFTqPkNLHI5U9rn8c" } }

Dabar mes naudosime šį prieigos raktą ir pridėsime jį prie „Headers“, esantį „Postman“ konfigūracijoje.

Dabar išbandykime tik mūsų autentišką maršrutą.

Kuriant GET užklausą, kad būtų grąžintas šiuo metu prisijungęs vartotojas

Užklausos URL:

GET //localhost:8000/api/users/current

Atsakymas:

{ "user": { "_id": "5b0f38772c46910f16a058c5", "email": "[email protected]", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImVyZGVsamFjLmFudG9uaW9AZ21haWwuY29tIiwiaWQiOiI1YjBmMzg3NzJjNDY5MTBmMTZhMDU4YzUiLCJleHAiOjE1MzI5MDgzMTgsImlhdCI6MTUyNzcyNDMxOH0.5UnA2mpS-_puPwwxZEb4VxRGFHX6qJ_Fn3pytgGaJT0" } }

Pabandykime tai padaryti be ženklo „Antraštėse“.

Atsakymas:

Pabaiga

Dėkojame, kad praėjote šią pamoką. Jei pastebite klaidų, praneškite man apie jas. Jei užstrigote bet kuriame žingsnyje, perskaitykite šią „GitHub“ repo.

Su manimi galite susisiekti per:

  • erdeljac DOT antonio AT gmail.com
  • Linkedinas

Peržiūrėkite mano programą „SwipeFeed“.