Amikor a webalkalmazásnak „emlékeznie kell” a felhasználókra, általában kétféle mechanizmust használ: cookie-kat vagy munkameneteket. A cookie egy kis tárhely a böngészőben, ahol tárolhatja a felhasználókkal kapcsolatos adatokat, például a keresési beállításokat. A munkamenetek lehetővé teszik az érzékeny információk tárolását a szerveren.

Fedezze fel, hogyan állíthat be munkameneteket a Node.js által üzemeltetett Express szerveren.

Amire szüksége lesz

Az oktatóanyag követéséhez telepítenie kell a Node.js-t és az npm-t is. Bármelyik legújabb verziója Node.js jönnie kell npm, egy csomagkezelő a függőségek telepítéséhez.

Az Express és az express-session telepítéséhez használja az npm-et. Ezeket az eszközöket fogja használni a webszerver és a munkamenet létrehozásához.

Mi az a munkamenet a Node.js-ben?

A cookie egy kis fájl, amelyet az Ön böngészője az adatok tárolására használ. Használhat cookie-kat nem érzékeny adatok, például keresési beállítások tárolására.

Ne tároljon érzékeny adatokat (például felhasználóneveket és jelszavakat) a cookie-kban. Amikor a böngészője HTTP-n keresztül sütiket küld, azok sebezhetőek a hackerekkel szemben, akik képesek lehetnek elfogni őket. A számítógépen egyszerű szövegként is tárolódnak, így a hackerek ellenőrizhetik őket, és ellophatják az Ön adatait.

instagram viewer

Ahelyett, hogy az érzékeny adatokat cookie-ként mentené a kliensen, a szerveren kell tárolnia. Ez megvédi a külvilágtól.

A munkamenetek lehetővé teszik érzékeny adatok tárolását, amelyekre az alkalmazásnak szüksége van a felhasználó azonosításához. Ilyen például a felhasználónév, jelszó és e-mail cím. Biztonságosabbak, mert a szerveren élnek, nem az ügyfélen.

Bármikor, amikor olyan adatokkal rendelkezik, amelyeket meg szeretne őrizni a kérések között, mentse azokat a szerver oldalon egy munkamenet segítségével. A következő részben megtudhatja, hogyan hozhat létre munkamenetet.

Munkamenet létrehozása Express szerveren

Az Express egy népszerű webes keretrendszer a Node.js számára. Lehetővé teszi egy webszerver-alkalmazás beállítását, amely figyeli az ügyfelek kéréseit a kiválasztott portszámon. Létrehozhat API-útvonalakat, alkalmazhat köztes szoftvert, és akár adatbázishoz is csatlakoztathatja az alkalmazást, mindezt a keretrendszer által biztosított API-knak köszönhetően.

1. Hozzon létre egy Node.js projektet

Hozzon létre egy vadonatúj mappát a projekthez, majd indítsa el a parancssori eszközt és a CD-t ebbe a mappába.

Ezután futtassa a következő parancsot a Node.js projekt inicializálásához:

npm init -y

Ez létrehoz egy package.json fájlt a projekt gyökérmappájában az alapértelmezett beállításokkal. A package.json fájl a futtatáshoz npm szkriptek.

2. Telepítse az Express és az expressz munkamenetet

A webszerver-alkalmazás létrehozásához az Expresst használja. És express-session munkamenetek létrehozásához a szerveralkalmazáson.

Mindkét függőség telepítéséhez futtassa a következő parancsot a terminálon:

npm expressz munkamenet

Mindkét csomag telepítése után a következő lépés a kiszolgáló létrehozása.

3. Hozzon létre munkameneteket az alkalmazásban

Hozzon létre egy App.js nevű fájlt a projekt gyökérmappájában, és importálja a függőségeket:

const expressz = igényelnek('Expressz')
const munkamenet = igényelnek("kifejezett munkamenet")
app = express()

Ezután regisztrálja a munkamenet köztes szoftverét. Adjon be egy tárgyat a titok tulajdonság (a sessionID cookie aláírásához) és a cookie.

app.use(
ülés({
titok: "valami titok",
aprósütemény: { maxAge: 30000 },
inicializálatlan mentés: hamis,
})
);

Itt állíthatja be a munkamenet legnagyobb korát 30 másodpercre (30000 ezredmásodperc). A saveUnitialized false értékre állítása elengedhetetlen, ha rendelkezik bejelentkezési rendszerrel. Ha ezt nem teszi meg, a szerver minden alkalommal új sessionID-t generál, amikor a felhasználó kérést küld.

Ezután hozzon létre egy bejelentkezési útvonalat a munkamenet megváltoztatásához. Amikor egy felhasználó eléri ezt az útvonalat, elvárja, hogy az ügyfél elküldje a felhasználónevet és a jelszót a kérés törzsében. Először eléri ezeket az értékeket, és ellenőrizze, hogy léteznek-e (és hogy a felhasználó hitelesítette-e):

app.post("/Belépés", (req, res) => {
const { felhasználónév, jelszó } = req.body;

ha (felhasználónév jelszó) {
ha (req.session.authenticated) {
res.json (munkamenet);
} más {
ha (Jelszó "123") {
req.session.authenticated = igaz;
req.session.user = { felhasználónév };
res.json (req.session);
} más {
res.status(403).json({ üzenet: "Rossz bizonyítvány" });
}
}
} más {
res.status(403).json({ üzenet: "Rossz bizonyítvány" });
}
});

Az első if utasítással álellenőrzést hajt végre. Ez az ellenőrzés annak biztosítására szolgál, hogy csak a felhasználónév és a jelszó megadása esetén folytassa.

Ezután ellenőrizze, hogy a felhasználó már hitelesített-e. Ha igen, küldje vissza a munkamenetet az ügyfélnek. Ha nem, állítsa a hitelesített tulajdonságot true értékre, és mentse a felhasználónevet a munkamenetbe. Ezután küldje vissza az ügyfélnek.

A fenti kóddal a szerver emlékezni fog minden olyan felhasználóra, aki kérést küld a szervernek. Ennek az az oka, hogy hitelesítették, és egyedi adataikat (felhasználónév és jelszó) elmentették a munkamenetben.

Indítsa el a szervert a következő kód hozzáadásával az App.js alján:

app.listen(3000, () => {
konzol.log("A szerver a 3000-es porton fut");
});

Az útvonal teszteléséhez egy API-kliens segítségével küldjön kérést a létrehozott bejelentkezési útvonalra. Feltétlenül küldje el a felhasználónevet és a jelszót a kérelem törzsében. Így nézne ki az API-kérelem, ha Rest Client-et használ:

KÖZZÉTÉTEL http://localhost: 3000/login HTTP/1.1
Tartalom típus: "alkalmazás/json"
{ felhasználónév: "Kingsley", Jelszó: "123"}

Ha minden jól megy, a következő objektumot kapja:

{
"aprósütemény": {
"originalMaxAge": 30000,
"Csak http": igaz,
"pálya": "/"
},
"hitelesített": igaz,
"felhasználó": {
"felhasználónév": "Kingsley",
"Jelszó": "123"
}
}

Ezzel a kóddal két dolog történt. Először is hitelesítetted a szerveren. Másodszor, a munkamenet már rendelkezik a bejelentkezési adataival, így a szerver most már tudja, ki vagy. Minden alkalommal, amikor új kérést küld, emlékezni fog rád, amíg a munkamenet le nem jár, és a szerver el nem távolítja azt.

A munkamenetek javítják a felhasználói élményt

A munkamenetek a Node.js alkalmazások létfontosságú részét képezik. Ennek az az oka, hogy lehetővé teszik az interakció állapotának fenntartását számos kérés és válasz között. A munkamenetek különösen fontosak azoknál az alkalmazásoknál, amelyekhez be kell jelentkezni.

Használja a munkameneteket a háttéralkalmazásban a felhasználóspecifikus adatok nyomon követéséhez. Ilyen adatok például azok a termékek, amelyeket a felhasználó a bevásárlókosárba helyezett.

Munkamenetek nélkül külön adattárat kell fenntartania az alkalmazás minden egyes felhasználója számára. Ez nem lenne hatékony, és bonyolultabbá tenné az alkalmazást.

Az Express.js leegyszerűsíti a munkameneteket, az útválasztást és egyebeket

Az Express.js a jelenleg használt legnépszerűbb Node.js webes keretrendszer. Számos eszközt és könyvtárat biztosít a háttéralkalmazások létrehozásához, és az expressz munkamenet-könyvtár csak egy ezek közül.

Ha a Node.js-t szeretné használni webes háttérfejlesztéshez, nézze meg az Expresst.