Když si vaše webová aplikace potřebuje „pamatovat“ uživatele, obvykle používá jeden ze dvou mechanismů: soubory cookie nebo relace. Soubor cookie je malá oblast úložiště v prohlížeči, kde můžete uchovávat data související s uživatelem, jako jsou například preference vyhledávání. Relace vám umožňují ukládat citlivé informace na server.
Zjistěte, jak nastavit relace na expresním serveru využívajícím Node.js.
Co budete potřebovat
Abyste mohli postupovat podle tohoto návodu, musíte mít nainstalovaný Node.js i npm. Jakákoli nejnovější verze Node.js by měl přijít s npm, správce balíčků pro instalaci závislostí.
K instalaci Express a express-session použijete npm. Toto jsou nástroje, které použijete k vytvoření webového serveru a relace.
Co je relace v Node.js?
Cookie je malý soubor, který váš prohlížeč používá k ukládání dat. Soubory cookie můžete používat k ukládání necitlivých dat, jako jsou předvolby vyhledávání.
Do cookies byste neměli ukládat citlivá data (jako jsou uživatelská jména a hesla). Když váš prohlížeč odesílá soubory cookie přes HTTP, jsou zranitelné vůči hackerům, kteří je mohou zachytit. Jsou také uloženy v prostém textu na vašem počítači, takže hackeři je mohou potenciálně zkontrolovat a ukrást vaše data.
Místo ukládání citlivých dat jako cookie na klientovi byste je měli uložit na server. Tím je chráněna před vnějším světem.
Relace vám umožňují ukládat citlivá data, která vaše aplikace potřebuje k identifikaci uživatele. Příklady jsou uživatelské jméno, heslo a e-mail. Jsou bezpečnější, protože žijí na serveru, nikoli na klientovi.
Kdykoli máte data, která chcete uchovat napříč požadavky, uložte je na straně serveru pomocí relace. V následující části se dozvíte, jak vytvořit relaci.
Vytvoření relace na expresním serveru
Express je populární webový framework pro Node.js. Umožňuje vám nastavit aplikaci webového serveru, která naslouchá požadavkům klientů na vámi zvoleném čísle portu. Můžete vytvářet API trasy, aplikovat middleware a dokonce připojit aplikaci k databázi, to vše díky API poskytovaným frameworkem.
1. Vytvořte projekt Node.js
Vytvořte zbrusu novou složku pro svůj projekt, poté spusťte nástroj příkazového řádku a do této složky spusťte CD.
Dále spusťte následující příkaz pro inicializaci projektu Node.js:
npm init -y
Tím se vygeneruje soubor package.json v kořenové složce projektu s výchozím nastavením. Soubor package.json pro spuštění skripty npm.
2. Nainstalujte Express a express-session
K vytvoření aplikace webového serveru použijete Express. A express-session pro vytvoření relací na této serverové aplikaci.
Na terminálu spusťte následující příkaz k instalaci obou závislostí:
npm i express express-session
Po instalaci obou balíčků by dalším krokem bylo vytvoření serveru.
3. Vytvářejte relace v aplikaci
V kořenové složce projektu vytvořte soubor s názvem App.js a importujte závislosti:
konst vyjádřit = vyžadovat('vyjádřit')
konst relace = vyžadovat('expres-session')
app = express()
Dále zaregistrujte middleware relace. Předejte předmět s tajný vlastnost (pro podepsání souboru cookie sessionID) a soubor cookie.
app.use(
zasedání({
tajný: "nějaké tajemství",
cookie: { maxVěk: 30000 },
saveUnitialized: Nepravdivé,
})
);
Zde nastavíte nejvyšší stáří relace na 30 sekund (30000 milisekundy). Nastavení saveUnitialized na false je nezbytné, pokud máte přihlašovací systém. Pokud tak neučiníte, váš server vygeneruje nové sessionID pokaždé, když uživatel odešle požadavek.
Dále vytvořte cestu přihlášení ke změně relace. Když uživatel zasáhne tuto cestu, očekáváte, že klient odešle uživatelské jméno a heslo v těle požadavku. Nejprve získáte přístup k těmto hodnotám a zkontrolujete, zda existují (a zda se uživatel ověřil):
app.post("/přihlásit se", (req, res) => {
konst { uživatelské jméno, heslo } = req.body;
-li (uživatelské jméno heslo) {
-li (req.session.authenticated) {
res.json (relace);
} jiný {
-li (Heslo "123") {
req.session.authenticated = skutečný;
req.session.user = { uživatelské jméno };
res.json (req.session);
} jiný {
res.status(403.json({ msg: "Špatné přihlašovací údaje" });
}
}
} jiný {
res.status(403.json({ msg: "Špatné přihlašovací údaje" });
}
});
S prvním příkazem if provedete fiktivní kontrolu. Tato kontrola má zajistit, že budete pokračovat pouze v případě, že je k dispozici uživatelské jméno a heslo.
Dále zkontrolujete, zda je uživatel již ověřen. Pokud ano, odešlete relaci zpět klientovi. Pokud ne, nastavte vlastnost authenticated na true a uložte uživatelské jméno do relace. Poté jej zašlete zpět klientovi.
S výše uvedeným kódem si server bude pamatovat každého uživatele, který odešle požadavek na server. Je to proto, že se ověřili a měli v relaci uloženy své jedinečné údaje (uživatelské jméno a heslo).
Spusťte svůj server přidáním následujícího kódu do spodní části App.js:
app.listen(3000, () => {
řídicí panel.log("Server běží na portu 3000");
});
Chcete-li otestovat tuto trasu, použijte klienta API k odeslání požadavku na trasu přihlášení, kterou jste vytvořili. Nezapomeňte odeslat uživatelské jméno a heslo v těle žádosti. Zde je návod, jak by váš požadavek API vypadal při použití klienta Rest:
POST http://localhost: 3000/login HTTP/1.1
Typ obsahu: "application/json"
{ uživatelské jméno: "Kingsley", Heslo: "123"}
Pokud vše půjde dobře, získáte následující objekt:
{
"cookie": {
"originalMaxAge": 30000,
"pouze http": skutečný,
"cesta": "/"
},
"ověřený": skutečný,
"uživatel": {
"uživatelské jméno": "Kingsley",
"Heslo": "123"
}
}
S tímto kódem se staly dvě věci. Nejprve jste se ověřili na serveru. Za druhé, relace nyní obsahuje vaše přihlašovací údaje, takže server nyní ví, kdo jste. Kdykoli odešlete nový požadavek, bude si vás pamatovat, dokud relace nevyprší a server ji neodstraní.
Relace zlepšují uživatelský dojem
Relace jsou důležitou součástí aplikací Node.js. Je to proto, že vám umožňují udržovat stav interakce napříč mnoha požadavky a odpověďmi. Relace jsou zvláště důležité pro aplikace, které vyžadují přihlášení.
Použijte relace ve své backendové aplikaci ke sledování dat specifických pro uživatele. Příkladem takových údajů jsou položky, které uživatel přidal do nákupního košíku.
Bez relací byste museli udržovat samostatné úložiště dat pro každého uživatele ve vaší aplikaci. To by bylo neefektivní a zvýšilo by to složitost aplikace.
Express.js zjednodušuje relace, směrování a další
Express.js je nejpopulárnější webový framework Node.js, který se v současnosti používá. Poskytuje mnoho nástrojů a knihoven pro vytváření backendových aplikací a knihovna express-session je jen jednou z nich.
Pokud chcete používat Node.js pro vývoj backendového webu, pak se podívejte na Express.