Tudja meg, hogyan kell kezelni a hitelesítést a Node-tal a Passport.js használatával

Támogasson engem azáltal, hogy elolvasta az eredeti forrásból: EREDETI FORRÁS

Ebben a cikkben megtudhatja, hogyan kell kezelni a csomópont-kiszolgáló hitelesítését a Passport.js segítségével . Ez a cikk nem tér ki a Frontend hitelesítésre. Ezzel konfigurálhatja a háttérprogram hitelesítését (Token létrehozása minden felhasználó számára és az útvonalak védelme).

Ne feledje, hogy ha bármilyen lépésnél elakad, hivatkozhat erre a GitHub repóra .

Ebben a cikkben a következőket tanítom meg neked:

  • Védett útvonalak kezelése
  • JWT tokenek kezelése
  • Az illetéktelen válaszok kezelése
  • Alap API létrehozása
  • Modellek és sémák készítése

Bevezetés

Mi a Passport.js?

A Passport a Node.js hitelesítési köztes szoftvere. Mivel rendkívül rugalmas és moduláris, a Passport feltűnés nélkül bedobható bármely Express-alapú webalkalmazásba. Az átfogó stratégiakészlet támogatja a felhasználónév és jelszó, a Facebook, a Twitter és egyebek használatával történő hitelesítést. Tudjon meg többet az útlevélről itt.

Bemutató

Csomópontkiszolgálónk létrehozása a semmiből

Hozzon létre egy új könyvtárat ezzel az „app.js” -velfájl belül:

A könnyebb fejlesztés érdekében telepítünk egy nodemont.

majd futtatjuk vele az „app.js” -t.

$ nodemon app.js

A felhasználói modell létrehozása

Hozzon létre egy új mappát „modellek” néven,és hozza létre a „Users.js” fájlt abban a mappában.Itt fogjuk meghatározni a „UsersSchema” -t. Mi fog használni JWT, és Cryptogenerálni hashés salta kapott passwordkarakterlánc. Ezt később felhasználják a felhasználó hitelesítésére.

Vegyük fel újonnan létrehozott modellünket az „app.js” fájlba.

A konfigurálás után adja hozzá a következő sort az „app.js” fájlhoz Mongoose:

require('./models/Users');

Konfigurálja az útlevelet

Hozzon létre egy új „config” mappát a benne található „passport.js” fájl segítségével:

Ebben a fájlban azt a módszert használjuk validatePassword, amelyet aUser model. Az eredmény alapján a Passport-tól eltérő kimenetet adunk vissza LocalStrategy.

Csatlakoztassuk a „passport.js” fájlt az „app.js” fájlunkhoz. Adja hozzá a következő sort az összes alámodels :

require('./config/passport');

Útvonalak és hitelesítési lehetőségek

Hozzon létre egy új mappát „útvonalak” néven, benne az „auth.js” fájlval.

Ebben a fájlban a függvény getTokenFromHeaderssegítségével kapunk egy JWT tokent , amelyet az ügyfél oldaláról küldünk el a kérés fejlécében . authObjektumot optionalés requiredtulajdonságokat is létrehozunk . Ezeket később felhasználjuk útjainkon.

Hozzon létre ugyanabban az „route” mappában egy „index.js” fájlt:

Most szükségünk van egy „api” mappára az „route” mappában, benne egy másik „index.js” fájlra.

Most hozzuk létre az „api / index.js” fájlban megkövetelt „users.js” fájlt.

Először egy opcionális hitelesítési útvonalat ‘/’fogunk létrehozni, amelyet az új modell létrehozásához (regisztrációhoz) használunk.

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

Ezt követően létrehozunk egy újabb opcionális hitelesítési útvonalat ‘/login’. Ezt felhasználjuk az útlevelünk konfigurálásának aktiválásához és az e-mailben kapott jelszó érvényesítéséhez.

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

Végül létrehozunk egy szükséges hitelesítési útvonalat, amelyet felhasználunk a jelenleg bejelentkezett felhasználó visszaadásához. Csak a bejelentkezett felhasználók (azok a felhasználók, akiknek a tokent sikeresen elküldték a kérés fejlécén keresztül) férhetnek hozzá ehhez az útvonalhoz.

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

Vegyük fel az „route” mappánkat az „app.js” mappába.Adja hozzá a következő sort útlevelünk alárequire :

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

Útvonal tesztelése

Postászt fogom használnihogy kéréseket küldjön a szerverünkre.

Szerverünk a következő törzset fogadja el:

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

POST-kérelem létrehozása egy felhasználó létrehozásához

Vizsgálati test:

Válasz:

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

Most ezt a tokent fogjuk használni, és hozzáadjuk a fejlécekhez a Postman konfigurációjában.

Most pedig teszteljük az egyetlen hitelesítési útvonalunkat.

GET-kérelem létrehozása a jelenleg bejelentkezett felhasználó visszaküldéséhez

Kérés URL:

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

Válasz:

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

Próbáljuk megtenni a fejlécek token nélkül.

Válasz:

Vége

Köszönjük, hogy végigvitte ezt az oktatóanyagot. Ha hibát észlel, kérem, jelezze nekem. Ha bármelyik lépésnél elakadt, olvassa el ezt a GitHub repót.

A következő címen veheti fel velem a kapcsolatot:

  • erdeljac DOT antonio AT gmail.com
  • Linkedin

Nézze meg a SwipeFeed alkalmazást.