Når nettapplikasjonen din trenger å "huske" brukere, bruker den vanligvis en av to mekanismer: informasjonskapsler eller økter. En informasjonskapsel er et lite lagringsområde i nettleseren der du kan oppbevare brukerrelaterte data som for eksempel søkepreferanser. Økter lar deg lagre sensitiv informasjon på serveren i stedet.

Oppdag hvordan du setter opp økter i en Express-server drevet av Node.js.

Hva du trenger

For å følge denne opplæringen trenger du både Node.js og npm installert. Enhver nyere versjon av Node.js bør følge med npm, en pakkebehandling for å installere avhengigheter.

Du bruker npm til å installere Express og express-session. Dette er verktøyene du vil bruke til å lage webserveren og økten.

Hva er en økt i Node.js?

En informasjonskapsel er en liten fil som nettleseren din bruker til å lagre data. Du kan bruke informasjonskapsler til å lagre ikke-sensitive data som søkepreferanser.

Du bør ikke lagre sensitive data (som brukernavn og passord) i informasjonskapsler. Når nettleseren din sender informasjonskapsler over HTTP, er de sårbare for hackere som kanskje kan avskjære dem. De er også lagret i ren tekst på datamaskinen din, slik at hackere potensielt kan inspisere dem og stjele dataene dine.

instagram viewer

I stedet for å lagre sensitive data som en informasjonskapsel på klienten, bør du lagre dem på serveren. Dette holder den beskyttet mot omverdenen.

Økter lar deg lagre sensitive data appen din trenger for å identifisere brukeren. Eksempler er brukernavn, passord og e-post. De er sikrere fordi de bor på serveren, ikke klienten.

Hver gang du har data som du vil vedvare på tvers av forespørsler, kan du lagre dem på serversiden ved hjelp av en økt. Du lærer hvordan du oppretter en økt i den følgende delen.

Opprette en økt i en ekspressserver

Express er et populært nettrammeverk for Node.js. Den lar deg sette opp en webserverapplikasjon som lytter til klientforespørsler på ditt valgte portnummer. Du kan lage API-ruter, bruke mellomvare og til og med koble applikasjonen til en database, alt takket være API-ene gitt av rammeverket.

1. Opprett et Node.js-prosjekt

Lag en helt ny mappe for prosjektet ditt, og start deretter kommandolinjeverktøyet og cd-en inn i den mappen.

Kjør deretter følgende kommando for å initialisere et Node.js-prosjekt:

npm init -y

Dette genererer en package.json-fil i prosjektets rotmappe med standardoppsettet. package.json-filen for kjøring npm-skript.

2. Installer Express og express-session

Du bruker Express for å lage webserverapplikasjonen. Og ekspress-økt for å lage økter på den serverapplikasjonen.

Kjør følgende kommando på terminalen for å installere begge avhengighetene:

npm i express express-session

Etter å ha installert begge pakkene, vil neste trinn være å lage serveren.

3. Opprett økter i appen

Opprett en fil med navnet App.js i prosjektets rotmappe og importer avhengighetene:

konst uttrykke = krever('uttrykke')
konst økt = krever('ekspressøkt')
app = express()

Deretter registrerer du øktmellomvaren. Send inn et objekt med hemmelig eiendom (for signering av sessionID-informasjonskapselen) og informasjonskapselen.

app.bruk(
økt({
hemmelig: "en hemmelighet",
kjeks: { maksAlder: 30000 },
lagreUinitialisert: falsk,
})
);

Her setter du den høyeste alderen på økten til 30 sekunder (30000 millisekunder). Å sette saveUnitialized til false er viktig hvis du har et påloggingssystem. Hvis du ikke klarer det, vil serveren generere en ny sesjons-ID hver gang brukeren sender en forespørsel.

Deretter oppretter du en påloggingsrute for å endre økten. Når en bruker treffer denne ruten, forventer du at klienten sender brukernavnet og passordet i forespørselsteksten. Først får du tilgang til disse verdiene og sjekker om de eksisterer (og om brukeren har autentisert):

app.post("/Logg Inn", (req, res) => {
konst { brukernavn, passord } = req.body;

hvis (brukernavn passord) {
hvis (req.session.authenticated) {
res.json (økt);
} ellers {
hvis (passord "123") {
req.session.authenticated = ekte;
req.session.user = { brukernavn };
res.json (req.session);
} ellers {
res.status(403).json({ melding: "Dårlig legitimasjon" });
}
}
} ellers {
res.status(403).json({ melding: "Dårlig legitimasjon" });
}
});

Med den første if-setningen utfører du en dummy-sjekk. Denne kontrollen er for å sikre at du bare fortsetter hvis brukernavnet og passordet er til stede.

Deretter sjekker du om brukeren allerede er autentisert. Send i så fall økten tilbake til klienten. Hvis ikke, sett den autentiserte egenskapen til true og lagre brukernavnet til økten. Send den deretter tilbake til klienten.

Med koden ovenfor vil serveren huske hver bruker som sender en forespørsel til serveren. Dette er fordi de har autentisert og fått sine unike detaljer (brukernavn og passord) lagret i økten.

Start serveren din ved å legge til følgende kode nederst i App.js:

app.listen(3000, () => {
konsoll.Logg("Tjeneren kjører på port 3000");
});

For å teste denne ruten, bruk en API-klient til å sende en forespørsel til påloggingsruten du opprettet. Sørg for å sende brukernavn og passord i forespørselens brødtekst. Slik vil API-forespørselen din se ut hvis du bruker Rest Client:

INNLEGG http://localhost: 3000/login HTTP/1.1
Innholdstype: "applikasjon/json"
{ brukernavn: "Kingsley", passord: "123"}

Hvis alt går bra, får du følgende objekt:

{
"kjeks": {
"originalMaxAge": 30000,
"Bare http": ekte,
"sti": "/"
},
"autentisert": ekte,
"bruker": {
"brukernavn": "Kingsley",
"passord": "123"
}
}

Med denne koden har to ting skjedd. Først har du autentisert på serveren. For det andre har økten nå dine påloggingsdetaljer, slik at serveren nå vet hvem du er. Hver gang du sender en ny forespørsel, vil den huske deg til økten utløper og serveren fjerner den.

Økter forbedrer brukeropplevelsen

Økter er en viktig del av Node.js-applikasjoner. Dette er fordi de lar deg opprettholde en tilstand av interaksjon på tvers av mange forespørsler og svar. Økter er spesielt viktige for applikasjoner som krever at du logger på.

Bruk økter i backend-appen din for å holde styr på brukerspesifikke data. Et eksempel på slike data er varene brukeren din har lagt til i en handlekurv.

Uten økter må du ha et separat datalager for hver bruker i applikasjonen din. Dette ville være ineffektivt og øke kompleksiteten til applikasjonen.

Express.js forenkler økter, ruting og mer

Express.js er det mest populære Node.js-nettverket som er i bruk. Det gir mange verktøy og biblioteker for å lage backend-applikasjoner, og ekspressøktsbiblioteket er bare ett av dem.

Hvis du vil bruke Node.js for backend webutvikling, så sjekk ut Express.