Wenn sich Ihre Webanwendung Benutzer „merken“ muss, verwendet sie normalerweise einen von zwei Mechanismen: Cookies oder Sitzungen. Ein Cookie ist ein kleiner Speicherbereich im Browser, in dem Sie benutzerbezogene Daten wie beispielsweise Sucheinstellungen speichern können. Sitzungen ermöglichen es Ihnen stattdessen, vertrauliche Informationen auf dem Server zu speichern.

Erfahren Sie, wie Sie Sitzungen auf einem von Node.js unterstützten Express-Server einrichten.

Was du brauchen wirst

Um diesem Tutorial zu folgen, müssen sowohl Node.js als auch npm installiert sein. Jede neuere Version von Node.js sollte mitkommen npm, ein Paketmanager zum Installieren von Abhängigkeiten.

Sie verwenden npm, um Express und express-session zu installieren. Dies sind die Tools, mit denen Sie den Webserver und die Sitzung erstellen.

Was ist eine Sitzung in Node.js?

Ein Cookie ist eine kleine Datei, die Ihr Browser verwendet, um Daten zu speichern. Sie können Cookies verwenden, um nicht sensible Daten wie Sucheinstellungen zu speichern.

instagram viewer

Sie sollten keine sensiblen Daten (wie Benutzernamen und Passwörter) in Cookies speichern. Wenn Ihr Browser Cookies über HTTP sendet, sind sie anfällig für Hacker, die sie möglicherweise abfangen können. Sie werden auch im Klartext auf Ihrem Computer gespeichert, sodass Hacker sie möglicherweise untersuchen und Ihre Daten stehlen können.

Anstatt sensible Daten als Cookie auf dem Client zu speichern, sollten Sie sie auf dem Server speichern. Dadurch ist es von der Außenwelt geschützt.

Mit Sitzungen können Sie vertrauliche Daten speichern, die Ihre App benötigt, um den Benutzer zu identifizieren. Beispiele sind Benutzername, Passwort und E-Mail. Sie sind sicherer, weil sie auf dem Server leben, nicht auf dem Client.

Jedes Mal, wenn Sie Daten haben, die Sie über Anforderungen hinweg beibehalten möchten, speichern Sie sie auf der Serverseite mithilfe einer Sitzung. Im folgenden Abschnitt erfahren Sie, wie Sie eine Sitzung erstellen.

Erstellen einer Sitzung in einem Express-Server

Express ist ein beliebtes Webframework für Node.js. Damit können Sie eine Webserver-Anwendung einrichten, die Client-Anfragen an der von Ihnen gewählten Portnummer abhört. Dank der vom Framework bereitgestellten APIs können Sie API-Routen erstellen, Middleware anwenden und sogar die Anwendung mit einer Datenbank verbinden.

1. Erstellen Sie ein Node.js-Projekt

Erstellen Sie einen brandneuen Ordner für Ihr Projekt, starten Sie dann Ihr Befehlszeilentool und cd in diesen Ordner.

Führen Sie als Nächstes den folgenden Befehl aus, um ein Node.js-Projekt zu initialisieren:

npm init -y

Dadurch wird eine package.json-Datei im Stammordner des Projekts mit der Standardkonfiguration generiert. Die Datei „package.json“ zum Ausführen npm-Skripte.

2. Installieren Sie Express und express-session

Sie verwenden Express, um die Webserveranwendung zu erstellen. Und express-session, um Sitzungen auf dieser Serveranwendung zu erstellen.

Führen Sie auf dem Terminal den folgenden Befehl aus, um beide Abhängigkeiten zu installieren:

npm i express Express-Session

Nach der Installation beider Pakete besteht der nächste Schritt darin, den Server zu erstellen.

3. Erstellen Sie Sitzungen in der App

Erstellen Sie eine Datei namens App.js im Stammordner Ihres Projekts und importieren Sie die Abhängigkeiten:

konst ausdrücken = erfordern('äußern')
konst Sitzung = erfordern('Express-Sitzung')
app = ausdrücken()

Registrieren Sie als Nächstes die Sitzungsmiddleware. Übergeben Sie ein Objekt mit dem Geheimnis -Eigenschaft (zum Signieren des Sitzungs-ID-Cookies) und das Cookie.

app.use(
Sitzung({
Geheimnis: "ein Geheimnis",
Plätzchen: { maxAlter: 30000 },
saveUninitialisiert: FALSCH,
})
);

Hier stellen Sie das höchste Alter der Sitzung auf 30 Sekunden ein (30000 Millisekunden). Das Setzen von saveUnitialized auf false ist wichtig, wenn Sie ein Anmeldesystem haben. Wenn Sie dies nicht tun, generiert Ihr Server jedes Mal eine neue Sitzungs-ID, wenn der Benutzer eine Anfrage sendet.

Erstellen Sie als Nächstes eine Anmelderoute, um die Sitzung zu ändern. Wenn ein Benutzer diese Route wählt, erwarten Sie, dass der Client den Benutzernamen und das Kennwort im Anforderungstext sendet. Zuerst greifen Sie auf diese Werte zu und prüfen, ob sie existieren (und ob sich der Benutzer authentifiziert hat):

app.post("/Anmeldung", (req, res) => {
konst { Benutzername, Passwort } = req.body;

Wenn (Benutzername Passwort) {
Wenn (req.session.authenticated) {
res.json (Sitzung);
} anders {
Wenn (Passwort "123") {
req.session.authenticated = WAHR;
req.session.user = { Benutzername };
res.json (req.session);
} anders {
res.status(403).json({ Nachricht: "Schlechte Referenzen" });
}
}
} anders {
res.status(403).json({ Nachricht: "Schlechte Referenzen" });
}
});

Mit der ersten if-Anweisung führen Sie eine Dummy-Prüfung durch. Diese Überprüfung soll sicherstellen, dass Sie nur fortfahren, wenn der Benutzername und das Passwort vorhanden sind.

Als nächstes prüfen Sie, ob der Benutzer bereits authentifiziert ist. Wenn dies der Fall ist, senden Sie die Sitzung an den Client zurück. Wenn nicht, setzen Sie die Eigenschaft authenticated auf true und speichern Sie den Benutzernamen in der Sitzung. Senden Sie es dann an den Kunden zurück.

Mit dem obigen Code merkt sich der Server jeden Benutzer, der eine Anfrage an den Server sendet. Dies liegt daran, dass sie sich authentifiziert haben und ihre eindeutigen Details (Benutzername und Passwort) in der Sitzung gespeichert wurden.

Starten Sie Ihren Server, indem Sie den folgenden Code am Ende von App.js hinzufügen:

app.listen(3000, () => {
Konsole.Protokoll("Server läuft auf Port 3000");
});

Verwenden Sie zum Testen dieser Route einen API-Client, um eine Anfrage an die von Ihnen erstellte Anmelderoute zu senden. Stellen Sie sicher, dass Sie den Benutzernamen und das Passwort im Text der Anfrage senden. So würde Ihre API-Anfrage aussehen, wenn Sie Rest Client verwenden:

POST http://localhost: 3000/login HTTP/1.1
Inhaltstyp: "Anwendung/json"
{ Nutzername: "Kingsley", Passwort: "123"}

Wenn alles gut geht, erhalten Sie das folgende Objekt:

{
"Plätzchen": {
"originalMaxAge": 30000,
"nur http": WAHR,
"Weg": "/"
},
"authentifiziert": WAHR,
"Benutzer": {
"Nutzername": "Kingsley",
"Passwort": "123"
}
}

Mit diesem Code sind zwei Dinge passiert. Zuerst haben Sie sich auf dem Server authentifiziert. Zweitens enthält die Sitzung jetzt Ihre Anmeldedaten, sodass der Server jetzt weiß, wer Sie sind. Jedes Mal, wenn Sie eine neue Anfrage senden, wird sie sich an Sie erinnern, bis die Sitzung abläuft und der Server sie entfernt.

Sitzungen verbessern die Benutzererfahrung

Sitzungen sind ein wichtiger Bestandteil von Node.js-Anwendungen. Dies liegt daran, dass sie es Ihnen ermöglichen, einen Interaktionszustand über viele Anfragen und Antworten hinweg aufrechtzuerhalten. Sitzungen sind besonders wichtig für Anwendungen, bei denen Sie sich anmelden müssen.

Verwenden Sie Sitzungen in Ihrer Backend-Anwendung, um benutzerspezifische Daten zu verfolgen. Ein Beispiel für solche Daten sind die Artikel, die Ihr Benutzer einem Einkaufswagen hinzugefügt hat.

Ohne Sitzungen müssten Sie für jeden Benutzer in Ihrer Anwendung einen separaten Datenspeicher verwalten. Dies wäre ineffizient und würde die Komplexität der Anwendung erhöhen.

Express.js vereinfacht Sitzungen, Routing und mehr

Express.js ist das beliebteste Node.js-Webframework, das derzeit verwendet wird. Es bietet viele Tools und Bibliotheken zum Erstellen von Backend-Anwendungen, und die Express-Session-Bibliothek ist nur eine davon.

Wenn Sie Node.js für die Backend-Webentwicklung verwenden möchten, dann sehen Sie sich Express an.