Când aplicația dvs. web trebuie să-și „amintească” utilizatorii, de obicei folosește unul dintre cele două mecanisme: cookie-uri sau sesiuni. Un cookie este o zonă mică de stocare în browser în care puteți păstra date legate de utilizator, cum ar fi preferințele de căutare, de exemplu. Sesiunile vă permit să stocați informații sensibile pe server.
Descoperiți cum să configurați sesiuni pe un server Express alimentat de Node.js.
Ce vei avea nevoie
Pentru a urma acest tutorial, aveți nevoie de instalate atât Node.js, cât și npm. Orice versiune recentă a Node.js ar trebui să vină cu npm, un manager de pachete pentru instalarea dependențelor.
Veți folosi npm pentru a instala Express și Express-session. Acestea sunt instrumentele pe care le veți folosi pentru a crea serverul web și sesiunea.
Ce este o sesiune în Node.js?
Un cookie este un fișier mic pe care browserul dumneavoastră îl folosește pentru a stoca date. Puteți folosi cookie-uri pentru a stoca date nesensibile, cum ar fi preferințele de căutare.
Nu ar trebui să stocați date sensibile (cum ar fi numele de utilizator și parolele) în cookie-uri. Când browserul dvs. trimite cookie-uri prin HTTP, acestea sunt vulnerabile în fața hackerilor care ar putea fi capabili să le intercepteze. De asemenea, sunt stocate în text simplu pe computerul dvs., astfel încât hackerii le pot inspecta și vă pot fura datele.
În loc să salvați datele sensibile ca cookie pe client, ar trebui să le stocați pe server. Acest lucru îl menține protejat de lumea exterioară.
Sesiunile vă permit să stocați date sensibile de care aplicația dvs. are nevoie pentru a identifica utilizatorul. Exemple sunt numele de utilizator, parola și e-mailul. Sunt mai siguri pentru că locuiesc pe server, nu pe client.
De fiecare dată când aveți date pe care doriți să le păstrați între solicitări, salvați-le pe partea serverului folosind o sesiune. Veți afla cum să creați o sesiune în secțiunea următoare.
Crearea unei sesiuni pe un server Express
Express este un cadru web popular pentru Node.js. Vă permite să configurați o aplicație de server web care ascultă cererile clienților la numărul de port ales. Puteți crea rute API, aplica middleware și chiar conecta aplicația la o bază de date, totul datorită API-urilor furnizate de framework.
1. Creați un proiect Node.js
Creați un folder nou-nouț pentru proiectul dvs., apoi lansați instrumentul de linie de comandă și CD-ul în acel folder.
Apoi, rulați următoarea comandă pentru a inițializa un proiect Node.js:
npm init -y
Aceasta generează un fișier package.json în folderul rădăcină al proiectului cu configurarea implicită. Fișierul package.json pentru rulare scripturi npm.
2. Instalați Express și Express-session
Veți folosi Express pentru a crea aplicația server web. Și express-session pentru a crea sesiuni pe acea aplicație server.
Pe terminal, rulați următoarea comandă pentru a instala ambele dependențe:
npm i express express-session
După instalarea ambelor pachete, următorul pas ar fi crearea serverului.
3. Creați sesiuni în aplicație
Creați un fișier numit App.js în folderul rădăcină al proiectului și importați dependențele:
const expres = cere('expres')
const sesiune = cere(„sesiune expresă”)
aplicație = expres()
Apoi, înregistrați middleware-ul de sesiune. Treceți un obiect cu secret proprietate (pentru semnarea cookie-ului sessionID) și cookie-ului.
app.use(
sesiune({
secret: "un secret",
cookie: { maxAge: 30000 },
salvare neinițializată: fals,
})
);
Aici setați cea mai mare vârstă a sesiunii la 30 de secunde (30000 milisecunde). Setarea saveUnitialized la false este esențială dacă aveți un sistem de conectare. Dacă nu reușiți să faceți acest lucru, serverul dvs. va genera un nou ID de sesiune de fiecare dată când utilizatorul trimite o solicitare.
Apoi, creați o rută de conectare pentru a schimba sesiunea. Când un utilizator accesează această rută, vă așteptați ca clientul să trimită numele de utilizator și parola în corpul solicitării. Mai întâi, accesați aceste valori și verificați dacă există (și dacă utilizatorul s-a autentificat):
app.post("/log in", (req, res) => {
const { nume de utilizator, parolă } = req.body;
dacă (nume utilizator, parola) {
dacă (req.session.authenticated) {
res.json (sesiune);
} altfel {
dacă (parola "123") {
req.session.authenticated = Adevărat;
req.session.user = { nume de utilizator };
res.json (req.session);
} altfel {
starea res.(403).json({ msg: „Acreditări proaste” });
}
}
} altfel {
starea res.(403).json({ msg: „Acreditări proaste” });
}
});
Cu prima declarație if, efectuați o verificare falsă. Această verificare este pentru a vă asigura că continuați numai dacă sunt prezente numele de utilizator și parola.
Apoi, verificați dacă utilizatorul este deja autentificat. Dacă da, trimiteți sesiunea înapoi clientului. Dacă nu, setați proprietatea autentificată la true și salvați numele de utilizator în sesiune. Apoi trimite-l înapoi clientului.
Cu codul de mai sus, serverul își va aminti fiecare utilizator care trimite o cerere către server. Acest lucru se datorează faptului că s-au autentificat și au avut detaliile lor unice (nume de utilizator și parolă) salvate în sesiune.
Porniți serverul adăugând următorul cod în partea de jos a App.js:
app.listen(3000, () => {
consolă.Buturuga(„Serverul rulează pe portul 3000”);
});
Pentru a testa această rută, utilizați un client API pentru a trimite o solicitare către ruta de conectare pe care ați creat-o. Asigurați-vă că trimiteți numele de utilizator și parola în corpul solicitării. Iată cum ar arăta solicitarea dvs. API dacă utilizați Rest Client:
POSTĂ http://localhost: 3000/login HTTP/1.1
Tipul de conținut: "aplicație/json"
{ nume de utilizator: "Kingsley", parola: "123"}
Dacă totul merge bine, veți obține următorul obiect:
{
"cookie": {
„originalMaxAge”: 30000,
„Numai http”: Adevărat,
"cale": "/"
},
"autentificat": Adevărat,
"utilizator": {
"nume de utilizator": "Kingsley",
"parola": "123"
}
}
Cu acest cod s-au întâmplat două lucruri. În primul rând, v-ați autentificat pe server. În al doilea rând, sesiunea are acum detaliile dvs. de conectare, astfel încât serverul știe acum cine sunteți. De fiecare dată când trimiteți o nouă solicitare, vă va aminti până când sesiunea expiră și serverul o elimină.
Sesiunile îmbunătățesc experiența utilizatorului
Sesiunile sunt o parte vitală a aplicațiilor Node.js. Acest lucru se datorează faptului că vă permit să mențineți o stare de interacțiune între multe cereri și răspunsuri. Sesiunile sunt deosebit de importante pentru aplicațiile care necesită autentificare.
Utilizați sesiuni în aplicația dvs. de backend pentru a urmări datele specifice utilizatorului. Un exemplu de astfel de date sunt articolele pe care utilizatorul dvs. le-a adăugat într-un coș de cumpărături.
Fără sesiuni, ar trebui să mențineți un depozit de date separat pentru fiecare utilizator din aplicația dvs. Acest lucru ar fi ineficient și ar crește complexitatea aplicației.
Express.js simplifică sesiunile, rutarea și multe altele
Express.js este cel mai popular cadru web Node.js utilizat în prezent. Oferă multe instrumente și biblioteci pentru crearea de aplicații backend, iar biblioteca expres-session este doar una dintre ele.
Dacă doriți să utilizați Node.js pentru dezvoltarea web backend, consultați Express.