Kun verkkosovelluksesi täytyy "muistaa" käyttäjät, se käyttää yleensä jompaakumpaa kahdesta mekanismista: evästeitä tai istuntoja. Eväste on pieni tallennusalue selaimessa, jossa voit säilyttää käyttäjiin liittyviä tietoja, kuten esimerkiksi hakuasetuksia. Istuntojen avulla voit sen sijaan tallentaa arkaluonteisia tietoja palvelimelle.

Tutustu istuntojen määrittämiseen Node.js: n tuottamassa Express-palvelimessa.

Mitä tarvitset

Jotta voit seurata tätä opetusohjelmaa, sinun on asennettava sekä Node.js että npm. Mikä tahansa uusin versio Node.js pitäisi tulla mukaan npm, paketinhallinta riippuvuuksien asentamiseen.

Käytät npm: ää Express- ja express-sessionin asentamiseen. Nämä ovat työkaluja, joita käytät verkkopalvelimen ja istunnon luomiseen.

Mikä on Node.js: n istunto?

Eväste on pieni tiedosto, jota selaimesi käyttää tietojen tallentamiseen. Voit käyttää evästeitä tallentaaksesi ei-arkaluonteisia tietoja, kuten hakuasetuksia.

Sinun ei pitäisi tallentaa arkaluontoisia tietoja (kuten käyttäjätunnuksia ja salasanoja) evästeisiin. Kun selaimesi lähettää evästeitä HTTP: n kautta, ne ovat alttiina hakkereille, jotka voivat siepata ne. Ne on myös tallennettu pelkkänä tekstinä tietokoneellesi, joten hakkerit voivat tarkastaa ne ja varastaa tietosi.

Sen sijaan, että tallennat arkaluonteisia tietoja evästeenä asiakkaalle, sinun tulee tallentaa ne palvelimelle. Tämä pitää sen suojassa ulkomaailmalta.

Istuntojen avulla voit tallentaa arkaluonteisia tietoja, joita sovelluksesi tarvitsee käyttäjän tunnistamiseen. Esimerkkejä ovat käyttäjätunnus, salasana ja sähköpostiosoite. Ne ovat turvallisempia, koska ne asuvat palvelimella, eivät asiakkaalla.

Aina kun sinulla on tietoja, jotka haluat säilyttää pyynnöissä, tallenna ne palvelinpuolelle istunnon avulla. Seuraavassa osiossa opit luomaan istunnon.

Istunnon luominen Express-palvelimessa

Express on suosittu verkkokehys Node.js: lle. Sen avulla voit määrittää verkkopalvelinsovelluksen, joka kuuntelee asiakkaan pyyntöjä valitsemallasi porttinumerolla. Voit luoda API-reittejä, käyttää väliohjelmistoa ja jopa yhdistää sovelluksen tietokantaan, kaikki puitteiden tarjoamien API: iden ansiosta.

1. Luo Node.js-projekti

Luo täysin uusi kansio projektillesi ja käynnistä sitten komentorivityökalu ja CD-levy kyseiseen kansioon.

Suorita seuraavaksi seuraava komento alustaaksesi Node.js-projekti:

npm init -y

Tämä luo paketin.json-tiedoston projektin juurikansioon oletusasetuksella. Package.json-tiedosto suoritukseen npm-skriptit.

2. Asenna Express ja express-session

Käytät Expressiä verkkopalvelinsovelluksen luomiseen. Ja pikaistunto istuntojen luomiseksi kyseisessä palvelinsovelluksessa.

Asenna molemmat riippuvuudet suorittamalla seuraava komento päätteessä:

npm i express pikaistunto

Kun molemmat paketit on asennettu, seuraava vaihe olisi palvelimen luominen.

3. Luo istuntoja sovelluksessa

Luo App.js-niminen tiedosto projektisi juurikansioon ja tuo riippuvuudet:

konst express = vaatia('ilmaista')
konst istunto = vaatia("pikaistunto")
sovellus = express()

Rekisteröi seuraavaksi istunnon väliohjelmisto. Ohita esine sisään salaisuus ominaisuus (sessionID-evästeen allekirjoittamista varten) ja eväste.

app.use(
istunto({
salaisuus: "joku salaisuus",
eväste: { maxAge: 30000 },
tallenna alustamaton: väärä,
})
);

Tässä asetat istunnon suurimman iän 30 sekuntiin (30000 millisekuntia). SaveUnitialized-asetuksen asettaminen arvoon false on välttämätöntä, jos sinulla on kirjautumisjärjestelmä. Jos et tee niin, palvelimesi luo uuden istuntotunnuksen aina, kun käyttäjä lähettää pyynnön.

Luo seuraavaksi kirjautumisreitti istunnon vaihtamista varten. Kun käyttäjä osuu tälle reitille, odotat asiakkaan lähettävän käyttäjänimen ja salasanan pyynnön tekstiosassa. Ensin käytät näitä arvoja ja tarkistat, ovatko ne olemassa (ja onko käyttäjä todentanut):

app.post("/Kirjaudu sisään", (req, res) => {
konst { käyttäjätunnus, salasana } = req.body;

jos (Käyttäjänimi Salasana) {
jos (req.session.authenticated) {
res.json (istunto);
} muu {
jos (Salasana "123") {
req.session.authenticated = totta;
req.session.user = { käyttäjänimi };
res.json (req.session);
} muu {
res.status(403).json({ viesti: "Väärät käyttäjätiedot" });
}
}
} muu {
res.status(403).json({ viesti: "Väärät käyttäjätiedot" });
}
});

First if -lauseella teet valetarkistuksen. Tämä tarkistus varmistaa, että jatkat vain, jos käyttäjätunnus ja salasana ovat olemassa.

Seuraavaksi tarkistat, onko käyttäjä jo todennettu. Jos on, lähetä istunto takaisin asiakkaalle. Jos ei, aseta todennettu ominaisuus arvoon tosi ja tallenna käyttäjänimi istuntoon. Lähetä se sitten takaisin asiakkaalle.

Yllä olevalla koodilla palvelin muistaa jokaisen käyttäjän, joka lähettää pyynnön palvelimelle. Tämä johtuu siitä, että he ovat todentaneet ja tallentaneet yksilölliset tietonsa (käyttäjätunnus ja salasana) istunnossa.

Käynnistä palvelin lisäämällä seuraava koodi App.js: n alareunaan:

app.listen(3000, () => {
konsoli.Hirsi("Palvelin toimii portissa 3000");
});

Testaaksesi tätä reittiä, käytä API-asiakasohjelmaa ja lähetä pyyntö luomallesi kirjautumisreitille. Muista lähettää käyttäjätunnus ja salasana pyynnön tekstiosassa. Tältä API-pyyntösi näyttäisi, jos käytät Rest Clientiä:

LÄHETÄ http://localhost: 3000/login HTTP/1.1
Sisältötyyppi: "sovellus/json"
{ käyttäjätunnus: "Kingsley", Salasana: "123"}

Jos kaikki menee hyvin, saat seuraavan kohteen:

{
"keksi": {
"alkuperäinenMaxAge": 30000,
"Vain http": totta,
"polku": "/"
},
"todennettu": totta,
"käyttäjä": {
"käyttäjänimi": "Kingsley",
"Salasana": "123"
}
}

Tämän koodin kanssa on tapahtunut kaksi asiaa. Ensin olet todentanut palvelimella. Toiseksi istunnossa on nyt kirjautumistietosi, joten palvelin tietää nyt kuka olet. Aina kun lähetät uuden pyynnön, se muistaa sinut, kunnes istunto päättyy ja palvelin poistaa sen.

Istunnot parantavat käyttökokemusta

Istunnot ovat tärkeä osa Node.js-sovelluksia. Tämä johtuu siitä, että niiden avulla voit ylläpitää vuorovaikutuksen tilaa monien pyyntöjen ja vastausten välillä. Istunnot ovat erityisen tärkeitä sovelluksille, jotka edellyttävät kirjautumista.

Käytä istuntoja taustasovelluksessasi seurataksesi käyttäjäkohtaisia ​​tietoja. Esimerkki tällaisista tiedoista ovat tuotteet, jotka käyttäjä on lisännyt ostoskoriin.

Ilman istuntoja sinun on ylläpidettävä erillistä tietovarastoa jokaiselle sovelluksesi käyttäjälle. Tämä olisi tehotonta ja lisäisi sovelluksen monimutkaisuutta.

Express.js yksinkertaistaa istuntoja, reititystä ja paljon muuta

Express.js on suosituin tällä hetkellä käytössä oleva Node.js-verkkokehys. Se tarjoaa monia työkaluja ja kirjastoja taustasovellusten luomiseen, ja pikaistuntokirjasto on vain yksi niistä.

Jos haluat käyttää Node.js: ää taustaverkkokehitykseen, tutustu Expressiin.