Siit saate teada, kuidas teenusega Passport.js autentimist käsitseda

Toetage mind, lugedes seda algallikast: ORIGINAL SOURCE

Selles artiklis saate teada, kuidas oma sõlmeserveri autentimist Passport.js abil kasutada . See artikkel ei hõlma Frontendi autentimist. Kasutage seda taustaprogrammi autentimise konfigureerimiseks (looge igale kasutajale luba ja kaitske marsruute).

Pidage meeles, et kui teil on mõni samm kinni jäänud, võite viidata sellele GitHubi repole .

Selles artiklis õpetan teile järgmist:

  • Kaitsealuste marsruutide käitlemine
  • JWT-märkide käitlemine
  • Volitamata vastuste käitlemine
  • Põhi-API loomine
  • Mudelite ja skeemide loomine

Sissejuhatus

Mis on Passport.js?

Pass on Node.js autentimise vahevara. Kuna see on äärmiselt paindlik ja modulaarne, saab passi märkamatult kõikidesse Express-i veebirakendustesse visata. Põhjalik strateegiate komplekt toetab autentimist kasutajanime ja parooli, Facebooki, Twitteri ja muu abil. Lisateavet passi kohta leiate siit.

Õpetus

Meie sõlmeserveri loomine nullist

Looge selle rakendusega app.js uus kataloogfail sees:

Lihtsamaks arendamiseks installime nodemoni.

ja siis käivitame sellega oma rakenduse “app.js”.

$ nodemon app.js

Kasutaja mudeli loomine

Looge uus kaust nimega “mudelid”,ja looge selles kaustas fail „Users.js“.Siin määratleme oma "UsersSchema". Kasutame JWTja Cryptogenereerime hashja saltsaadud passwordstringi. Seda kasutatakse hiljem kasutaja kinnitamiseks.

Lisame oma äsja loodud mudeli rakendusse „app.js”.

Pärast konfigureerimist lisage faili „app.js” järgmine rida Mongoose:

require('./models/Users');

Seadistage pass

Looge uus kaust “config”, mille sees on fail “passport.js”:

Selles failis kasutame meetodit, validatePasswordmille me defineerisime failisUser model. Tulemuse põhjal tagastame Passportist erineva väljundi LocalStrategy.

Ühendame faili „passport.js” meie failiga „app.js”. Lisage järgmine rida kõigi allamodels :

require('./config/passport');

Marsruudid ja autentimisvalikud

Looge uus kaust nimega marsruudid, mille sees on fail „auth.js”.

Selles failis me kasutame funktsiooni getTokenFromHeaderssaada JWT sümboolne , mida saadetakse kliendipoolse on taotluse tema päised . Me luua ka authobjekti optionalja requiredomadused. Kasutame neid hiljem oma liinidel.

Looge samasse kausta marsruudid fail index.js:

Nüüd vajame kausta marsruudid kausta “api”, mille sees on veel üks fail “index.js”.

Nüüd loome faili „users.js”, mida vajame failis „api / index.js”.

Kõigepealt loome valikulise auth- marsruudi, ‘/’mida kasutatakse uue mudeli loomiseks (register).

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

Pärast seda loome veel ühe valikulise autentimise marsruudi ‘/login’. Seda kasutatakse meie passi konfiguratsiooni aktiveerimiseks ja e-posti teel saadud parooli kinnitamiseks.

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

Lõpuks loome nõutava autentimise marsruudi, mida kasutatakse praegu sisseloginud kasutaja tagastamiseks. Sellele marsruudile pääsevad juurde ainult sisse loginud kasutajad (kasutajad, kelle luba on edukalt päringu päiste kaudu saadetud).

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

Lisame kausta „Routes” kausta „app.js”.Lisage meie passi alla järgmine rida require:

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

Marsruudi testimine

Ma kasutan Postmanimeie serverile päringute saatmiseks.

Meie server aktsepteerib järgmist keha:

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

Kasutaja loomiseks POST-päringu loomine

Katsekeha:

Vastus:

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

Kasutame seda märki ja lisame selle Postmani konfiguratsioonis oma päistesse.

Ja nüüd proovime oma ainsa autentsuse marsruuti.

GET-päringu loomine praegu sisseloginud kasutaja tagastamiseks

Taotle URL-i:

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

Vastus:

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

Proovime seda teha ilma päisteta märgita.

Vastus:

Lõpp

Täname teid selle õpetuse läbimise eest. Kui märkate vigu, teatage neist mulle. Kui jäite mõnele sammule vahele, vaadake palun seda GitHubi repot.

Minuga saate ühendust:

  • erdeljac DOT antonio AT gmail.com
  • Linkedin

Vaadake minu rakendust SwipeFeed.