
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 Crypto
generálni hash
és salt
a kapott password
karakterlá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 getTokenFromHeaders
segí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 . auth
Objektumot optional
és required
tulajdonsá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
Nézze meg a SwipeFeed alkalmazást.