Ko si mora vaša spletna aplikacija "zapomniti" uporabnike, običajno uporablja enega od dveh mehanizmov: piškotke ali seje. Piškotek je majhen prostor za shranjevanje v brskalniku, kjer lahko shranite podatke, povezane z uporabnikom, kot so na primer nastavitve iskanja. Seje vam namesto tega omogočajo shranjevanje občutljivih informacij na strežniku.

Odkrijte, kako nastaviti seje v strežniku Express, ki ga poganja Node.js.

Kaj boste potrebovali

Če želite slediti tej vadnici, morate namestiti Node.js in npm. Katera koli najnovejša različica Node.js bi moral priti z npm, upravitelj paketov za namestitev odvisnosti.

Za namestitev Express in express-session boste uporabili npm. To so orodja, ki jih boste uporabili za ustvarjanje spletnega strežnika in seje.

Kaj je seja v Node.js?

Piškotek je majhna datoteka, ki jo vaš brskalnik uporablja za shranjevanje podatkov. Piškotke lahko uporabite za shranjevanje neobčutljivih podatkov, kot so nastavitve iskanja.

V piškotke ne shranjujte občutljivih podatkov (kot so uporabniška imena in gesla). Ko vaš brskalnik pošilja piškotke prek protokola HTTP, so ranljivi za hekerje, ki bi jih morda lahko prestregli. Prav tako so shranjeni v navadnem besedilu v vašem računalniku, tako da jih lahko hekerji potencialno pregledajo in ukradejo vaše podatke.

Namesto da občutljive podatke shranite kot piškotek na odjemalcu, jih shranite na strežnik. Tako je zaščiten pred zunanjim svetom.

Seje vam omogočajo shranjevanje občutljivih podatkov, ki jih vaša aplikacija potrebuje za identifikacijo uporabnika. Primeri so uporabniško ime, geslo in e-pošta. So bolj varni, ker živijo na strežniku, ne na odjemalcu.

Kadarkoli imate podatke, ki jih želite obdržati med zahtevami, jih shranite na strani strežnika z uporabo seje. V naslednjem razdelku se boste naučili, kako ustvariti sejo.

Ustvarjanje seje v strežniku Express

Express je priljubljeno spletno ogrodje za Node.js. Omogoča vam nastavitev aplikacije spletnega strežnika, ki posluša zahteve odjemalcev na izbrani številki vrat. Ustvarite lahko poti API-jev, uporabite vmesno programsko opremo in celo povežete aplikacijo z bazo podatkov, vse zahvaljujoč API-jem, ki jih ponuja ogrodje.

1. Ustvarite projekt Node.js

Ustvarite popolnoma novo mapo za svoj projekt, nato zaženite orodje ukazne vrstice in v to mapo zaženite cd.

Nato zaženite naslednji ukaz za inicializacijo projekta Node.js:

npm init -y

To ustvari datoteko package.json v korenski mapi projekta s privzeto nastavitvijo. Datoteka package.json za zagon skripte npm.

2. Namestite Express in express-session

Za ustvarjanje aplikacije spletnega strežnika boste uporabili Express. In hitra seja za ustvarjanje sej v tej strežniški aplikaciji.

Na terminalu zaženite naslednji ukaz, da namestite obe odvisnosti:

npm i express hitra seja

Po namestitvi obeh paketov bi bil naslednji korak izdelava strežnika.

3. Ustvarite seje v aplikaciji

Ustvarite datoteko z imenom App.js v korenski mapi vašega projekta in uvozite odvisnosti:

konst izraziti = zahtevati('express')
konst seja = zahtevati('hitra seja')
app = express()

Nato registrirajte vmesno programsko opremo seje. Prenesite predmet z skrivnost lastnost (za podpis piškotka sessionID) in piškotek.

app.use(
seja({
skrivnost: "neka skrivnost",
piškotek: { maxAge: 30000 },
saveUninitialized: lažno,
})
);

Tukaj nastavite največjo starost seje na 30 sekund (30000 milisekunde). Nastavitev saveUnitialized na false je nujna, če imate sistem za prijavo. Če tega ne storite, bo vaš strežnik ustvaril nov ID seje vsakič, ko uporabnik pošlje zahtevo.

Nato ustvarite prijavno pot za spremembo seje. Ko uporabnik zadene to pot, pričakujete, da odjemalec pošlje uporabniško ime in geslo v telesu zahteve. Najprej dostopate do teh vrednosti in preverite, ali obstajajo (in ali je uporabnik overjen):

app.post("/Vpiši se", (req, res) => {
konst { uporabniško ime, geslo } = req.body;

če (uporabniško ime geslo) {
če (req.session.authenticated) {
res.json (seja);
} drugače {
če (geslo "123") {
req.session.authenticated = prav;
req.session.user = { uporabniško ime };
res.json (req.session);
} drugače {
res.status(403).json({ sporočilo: "Slabe poverilnice" });
}
}
} drugače {
res.status(403).json({ sporočilo: "Slabe poverilnice" });
}
});

S prvim stavkom if izvedete navidezno preverjanje. To preverjanje zagotavlja, da nadaljujete samo, če sta prisotna uporabniško ime in geslo.

Nato preverite, ali je uporabnik že overjen. Če je tako, pošljite sejo nazaj stranki. Če ni, nastavite lastnost overjeno na true in shranite uporabniško ime v sejo. Nato ga pošljite nazaj stranki.

Z zgornjo kodo si bo strežnik zapomnil vsakega uporabnika, ki strežniku pošlje zahtevo. To je zato, ker so se overili in imeli svoje edinstvene podatke (uporabniško ime in geslo) shranjene v seji.

Zaženite strežnik tako, da dodate naslednjo kodo na dno App.js:

app.listen(3000, () => {
konzola.log("Strežnik deluje na vratih 3000");
});

Če želite preizkusiti to pot, uporabite odjemalca API, da pošljete zahtevo na prijavno pot, ki ste jo ustvarili. Ne pozabite poslati uporabniškega imena in gesla v telesu zahteve. Takole bi izgledala vaša zahteva API, če uporabljate odjemalca za počitek:

OBJAVA http://lokalni gostitelj: 3000/prijava HTTP/1.1
Vrsta vsebine: "aplikacija/json"
{ uporabniško ime: "Kingsley", geslo: "123"}

Če gre vse v redu, boste dobili naslednji predmet:

{
"piškotek": {
"originalMaxAge": 30000,
"samo http": prav,
"pot": "/"
},
"preverjeno": prav,
"uporabnik": {
"uporabniško ime": "Kingsley",
"geslo": "123"
}
}

S to kodo sta se zgodili dve stvari. Najprej ste se overili na strežniku. Drugič, seja ima zdaj vaše podatke za prijavo, tako da strežnik zdaj ve, kdo ste. Vsakič, ko pošljete novo zahtevo, si vas zapomni, dokler seja ne poteče in je strežnik odstrani.

Seje izboljšajo uporabniško izkušnjo

Seje so pomemben del aplikacij Node.js. To je zato, ker vam omogočajo ohranjanje stanja interakcije med številnimi zahtevami in odgovori. Seje so še posebej pomembne za aplikacije, ki zahtevajo, da se prijavite.

Uporabite seje v svoji zaledni aplikaciji, da spremljate podatke, specifične za uporabnika. Primer takšnih podatkov so izdelki, ki jih je vaš uporabnik dodal v nakupovalni voziček.

Brez sej bi morali vzdrževati ločeno shrambo podatkov za vsakega uporabnika v vaši aplikaciji. To bi bilo neučinkovito in bi povečalo kompleksnost aplikacije.

Express.js poenostavlja seje, usmerjanje in drugo

Express.js je trenutno najbolj priljubljeno spletno ogrodje Node.js. Zagotavlja veliko orodij in knjižnic za ustvarjanje zalednih aplikacij, knjižnica hitre seje pa je le ena izmed njih.

Če želite uporabljati Node.js za zaledni spletni razvoj, si oglejte Express.