Keď si vaša webová aplikácia potrebuje „zapamätať“ používateľov, zvyčajne používa jeden z dvoch mechanizmov: súbory cookie alebo relácie. Súbor cookie je malá oblasť úložiska v prehliadači, kde môžete uchovávať údaje súvisiace s používateľom, ako sú napríklad predvoľby vyhľadávania. Relácie vám umožňujú ukladať citlivé informácie na serveri.
Zistite, ako nastaviť relácie na serveri Express, ktorý používa Node.js.
Čo budete potrebovať
Ak chcete postupovať podľa tohto návodu, musíte mať nainštalovaný súbor Node.js aj npm. Akákoľvek najnovšia verzia Node.js by mal prísť s npm, správca balíkov na inštaláciu závislostí.
Na inštaláciu Express a express-session použijete npm. Toto sú nástroje, ktoré použijete na vytvorenie webového servera a relácie.
Čo je to relácia v Node.js?
Súbor cookie je malý súbor, ktorý váš prehliadač používa na ukladanie údajov. Súbory cookie môžete použiť na ukladanie necitlivých údajov, ako sú predvoľby vyhľadávania.
Do cookies by ste nemali ukladať citlivé údaje (ako sú používateľské mená a heslá). Keď váš prehliadač odosiela súbory cookie cez HTTP, sú zraniteľné voči hackerom, ktorí ich môžu zachytiť. Sú tiež uložené ako obyčajný text vo vašom počítači, takže hackeri ich môžu potenciálne skontrolovať a ukradnúť vaše údaje.
Namiesto ukladania citlivých údajov ako súboru cookie na klientovi by ste ich mali uložiť na server. Vďaka tomu je chránený pred vonkajším svetom.
Relácie vám umožňujú ukladať citlivé údaje, ktoré vaša aplikácia potrebuje na identifikáciu používateľa. Príkladmi sú používateľské meno, heslo a e-mail. Sú bezpečnejšie, pretože žijú na serveri, nie na klientovi.
Kedykoľvek máte údaje, ktoré chcete zachovať medzi požiadavkami, uložte ich na strane servera pomocou relácie. V nasledujúcej časti sa dozviete, ako vytvoriť reláciu.
Vytvorenie relácie na expresnom serveri
Express je populárny webový rámec pre Node.js. Umožňuje vám nastaviť aplikáciu webového servera, ktorá počúva požiadavky klientov na vami zvolenom čísle portu. Môžete vytvárať trasy API, aplikovať middleware a dokonca pripojiť aplikáciu k databáze, a to všetko vďaka rozhraniam API poskytovaným rámcom.
1. Vytvorte projekt Node.js
Vytvorte úplne nový priečinok pre svoj projekt, potom spustite nástroj príkazového riadka a do tohto priečinka spustite CD.
Potom spustite nasledujúci príkaz na inicializáciu projektu Node.js:
npm init -y
Toto vygeneruje súbor package.json v koreňovom priečinku projektu s predvoleným nastavením. Súbor package.json na spustenie skripty npm.
2. Nainštalujte Express a express-session
Na vytvorenie aplikácie webového servera použijete Express. A express-session na vytvorenie relácií na tejto serverovej aplikácii.
Na termináli spustite nasledujúci príkaz na inštaláciu oboch závislostí:
npm i express express-session
Po nainštalovaní oboch balíkov by ďalším krokom bolo vytvorenie servera.
3. Vytvárajte relácie v aplikácii
Vytvorte súbor s názvom App.js v koreňovom priečinku projektu a importujte závislosti:
konšt vyjadriť = vyžadovať('expresné')
konšt relácia = vyžadovať('expres-session')
app = express()
Ďalej zaregistrujte middleware relácie. Prejdite do objektu s tajný vlastnosť (na podpísanie súboru cookie sessionID) a súbor cookie.
app.use(
relácia ({
tajomstvo: "nejaké tajomstvo",
cookie: { maxVek: 30000 },
saveUnitialized: falošný,
})
);
Tu nastavíte najvyšší vek relácie na 30 sekúnd (30000 milisekúnd). Nastavenie saveUnitialized na false je nevyhnutné, ak máte prihlasovací systém. Ak tak neurobíte, váš server vygeneruje nové ID relácie zakaždým, keď používateľ odošle požiadavku.
Ďalej vytvorte prihlasovaciu cestu na zmenu relácie. Keď používateľ zasiahne túto cestu, očakávate, že klient pošle používateľské meno a heslo v tele požiadavky. Najprv získate prístup k týmto hodnotám a skontrolujete, či existujú (a či sa používateľ overil):
app.post("/Prihlásiť sa", (req, res) => {
konšt { meno používateľa, heslo } = req.body;
ak (používateľské meno a heslo) {
ak (req.session.authenticated) {
res.json (relácia);
} inak {
ak (heslo "123") {
req.session.authenticated = pravda;
req.session.user = { meno používateľa };
res.json (req.session);
} inak {
res.status(403.json({ msg: "Zlé poverenia" });
}
}
} inak {
res.status(403.json({ msg: "Zlé poverenia" });
}
});
S prvým príkazom if vykonáte fiktívnu kontrolu. Táto kontrola má zabezpečiť, aby ste pokračovali iba v prípade, že je k dispozícii používateľské meno a heslo.
Ďalej skontrolujete, či je používateľ už overený. Ak áno, odošlite reláciu späť klientovi. Ak nie, nastavte autentifikovanú vlastnosť na true a uložte používateľské meno do relácie. Potom ho pošlite späť klientovi.
S vyššie uvedeným kódom si server zapamätá každého používateľa, ktorý odošle požiadavku na server. Je to preto, že sa overili a v relácii si uložili svoje jedinečné údaje (používateľské meno a heslo).
Spustite svoj server pridaním nasledujúceho kódu do spodnej časti App.js:
app.listen(3000, () => {
konzoly.log("Server beží na porte 3000");
});
Ak chcete otestovať túto cestu, použite klienta API na odoslanie požiadavky na trasu prihlásenia, ktorú ste vytvorili. Nezabudnite odoslať používateľské meno a heslo v tele žiadosti. Takto by vyzerala vaša požiadavka na rozhranie API, ak by ste použili klienta Rest:
Zverejniť http://localhost: 3000/login HTTP/1.1
Druh obsahu: "application/json"
{ užívateľské meno: "Kingsley", heslo: "123"}
Ak všetko pôjde dobre, dostanete nasledujúci objekt:
{
"cookie": {
"originalMaxAge": 30000,
"http Only": pravda,
"cesta": "/"
},
"overený": pravda,
"užívateľ": {
"používateľské meno": "Kingsley",
"heslo": "123"
}
}
S týmto kódom sa stali dve veci. Najprv ste sa overili na serveri. Po druhé, relácia má teraz vaše prihlasovacie údaje, takže server teraz vie, kto ste. Kedykoľvek odošlete novú požiadavku, bude si vás pamätať, kým relácia nevyprší a server ju neodstráni.
Relácie zlepšujú používateľskú skúsenosť
Relácie sú dôležitou súčasťou aplikácií Node.js. Je to preto, že vám umožňujú udržiavať stav interakcie medzi mnohými požiadavkami a odpoveďami. Relácie sú obzvlášť dôležité pre aplikácie, ktoré vyžadujú, aby ste sa prihlásili.
Pomocou relácií vo svojej backendovej aplikácii sledujte údaje špecifické pre používateľa. Príkladom takýchto údajov sú položky, ktoré používateľ pridal do nákupného košíka.
Bez relácií by ste museli udržiavať samostatné úložisko údajov pre každého používateľa vo vašej aplikácii. To by bolo neefektívne a zvýšilo by to zložitosť aplikácie.
Express.js zjednodušuje relácie, smerovanie a ďalšie
Express.js je najpopulárnejší webový rámec Node.js, ktorý sa v súčasnosti používa. Poskytuje mnoho nástrojov a knižníc na vytváranie backendových aplikácií a knižnica expresných relácií je len jednou z nich.
Ak chcete použiť Node.js na vývoj backendového webu, vyskúšajte Express.