Inhaltsverzeichnis
Vorwort
Was ist eine Sitzung?
Sitzung im Knoten
Sitzung wird in Redis gespeichert
Sitzung wird in mongoDb gespeichert
Heim Web-Frontend js-Tutorial Was ist eine Sitzung im Knoten? Wie benutzt man?

Was ist eine Sitzung im Knoten? Wie benutzt man?

Sep 14, 2018 pm 02:03 PM
javascript mongodb node.js redis session

Der Inhalt dieses Artikels befasst sich mit der Frage, was eine Sitzung im Knoten ist. Wie benutzt man? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Vorwort

Im vorherigen Artikel wurden Cookies im Knoten vorgestellt. In diesem Artikel wird die Sitzung weiter erläutert.

Was ist eine Sitzung?

Sitzung ist nur eine Sitzung. Was ist also eine Sitzung?
Sitzung ist ein Konzept mit einer größeren Granularität als Verbindung. Eine 会话kann mehrere 连接s enthalten, und jede Verbindung wird als Vorgang der Sitzung betrachtet.
Wenn der Benutzer zwischen Webseiten wechselt, gehen die im Sitzungsobjekt gespeicherten Variablen nicht verloren, sondern bleiben während der gesamten Benutzersitzung bestehen.
Wenn ein Benutzer eine Webseite von Ihrer Anwendung anfordert, erstellt der Webserver automatisch ein Sitzungsobjekt, sofern der Benutzer noch keine Sitzung hat. Wenn eine Sitzung abläuft oder abgebrochen wird, beendet der Server die Sitzung.

Nachdem wir so viel gesagt haben, werfen wir zunächst einen Blick auf dieses Produkt.

Was ist eine Sitzung im Knoten? Wie benutzt man?

Es stellt sich heraus, dass die von der Sitzungs-Middleware generierte Sitzung ein Objekt ist, das Cookie-Informationen enthält.

Sitzung im Knoten

Installieren Sie zunächst das Express-Framework, die CookieParser-Middleware und die Express-Sitzungs-Middleware

npm i express --save
npm i cookie-parser --save
npm i express-session --save
Nach dem Login kopieren

Standardmäßig speichert die Express-Sitzungs-Middleware Sitzungsinformationen, in denen sie gespeichert ist Speicher und erfordert 签名cookie, daher müssen Sie ihm ein 秘钥 übergeben, wenn Sie cookieParser() verwenden. Wenn kein geheimer Schlüssel vorhanden ist, wird Error: secret option required for sessions

Der Code lautet wie folgt:

var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var app = express()
app.use(cookieParser())

const hour = 1000 * 60 * 60;
var sessionOpts = {
  // 设置密钥
  secret: 'a cool secret',
  // Forces the session to be saved back to the session store
  resave: true,
  // Forces a session that is "uninitialized" to be saved to the store.
  saveUninitialized: true,
  // 设置会话cookie名, 默认是connect.sid
  key: 'myapp_sid',
  // If secure is set to true, and you access your site over HTTP, the cookie will not be set.
  cookie: { maxAge: hour * 2, secure: false }
}
app.use(session(sessionOpts))

app.use(function(req, res, next) {
  if (req.url === '/favicon.ico') {
    return
  }

  // 同一个浏览器而言,req是同一个
  var sess = req.session;
  console.log(sess)

  if (sess.views) {
    sess.views++;
  } else {
    sess.views = 1;
  }
  res.setHeader('Content-Type', 'text/html');
  res.write('<p>views: ' + sess.views + '</p>');
  res.end();
});

app.listen(4000);
Nach dem Login kopieren

Der obige Code implementiert eine einfache 页面浏览计数-Funktion.
Führen Sie den obigen Code aus, Sie können den Browser öffnen, die Seite kontinuierlich aktualisieren und den im Knotenprogramm gedruckten Sess-Wert beobachten.
Wir haben festgestellt, dass beim Aktualisieren der Seite im selben Browser dieselbe Sitzung auf der Konsole gedruckt wurde, der Wert der Ansichten jedoch geändert wurde. Mit anderen Worten: Mehrere HTTP-Verbindungen entsprechen derselben Sitzung.

Sitzung wird in Redis gespeichert

Standardmäßig speichert die Express-Sitzungs-Middleware Sitzungsinformationen im Speicher, aber während der Entwicklung und Produktion ist es am besten, eine dauerhafte und skalierbare Datenspeicherung für Ihre Sitzungsdaten zu haben . Die Express-Community hat mehrere Sitzungsspeicher erstellt, die Datenbanken verwenden, darunter MongoDB, Redis, Memcached, PostgreSQL und andere. Aber niedrige Latenz 键/值存储 eignet sich am besten für diese Art von flüchtigen Daten. Hier verwenden wir zunächst Redis, um Sitzungsinformationen zu speichern.

Installieren Sie zunächst das Connect-Redis-Modul

npm i connect-redis --save
Nach dem Login kopieren

Der Code lautet wie folgt:

var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var RedisStore = require('connect-redis')(session);

var app = express()
app.use(cookieParser())

var options = {
  host: '127.0.0.1',
  port: 6379,
  db: 1, // Database index to use. Defaults to Redis's default (0).
  prefix: 'ID:' // Key prefix defaulting to "sess:"
  // pass: 'aaa' // Password for Redis authentication
}

const hour = 1000 * 60 * 60;
var sessionOpts = {
  store: new RedisStore(options),
  // 设置密钥
  secret: 'a cool secret',
  // Forces the session to be saved back to the session store
  resave: true,
  // Forces a session that is "uninitialized" to be saved to the store.
  saveUninitialized: true,
  // 设置会话cookie名
  key: 'myapp_sid',
  // If secure is set to true, and you access your site over HTTP, the cookie will not be set.
  cookie: { maxAge: hour * 8, secure: false }
}
app.use(session(sessionOpts)) // 如果没有secret,会提醒 Error: secret option required for sessions

app.use(function(req, res, next) {
  if (req.url === '/favicon.ico') {
    return
  }

  var sess = req.session;
  var id = req.sessionID; // session ID, 只读
  console.log(sess, id);

  if (sess.views) {
    sess.views++; // 如果放在res.end()后,不会自增
    res.setHeader('Content-Type', 'text/html');
    res.write('<p>views: ' + sess.views + '</p>');
    res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>');
    res.end();
  } else {
    sess.views = 1;
    res.end('welcome to the session demo. refresh!');
  }
});

app.listen(4000);
Nach dem Login kopieren

Im obigen Programm werden die Sitzungsinformationen in der DB1-Datenbank von Redis gespeichert . Nach dem Ausführen, aktualisieren Sie den Browser. Die Informationen in der Datenbank lauten wie folgt:

Was ist eine Sitzung im Knoten? Wie benutzt man?

Sitzung wird in mongoDb gespeichert

Zuerst: Sie müssen das Connect-Mongo-Modul installieren

npm i connect-mongo --save
Nach dem Login kopieren

Der Code lautet wie folgt:

var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var MongoStore = require('connect-mongo')(session);
const hour = 1000 * 60 * 60

var app = express()
app.use(cookieParser())
app.use(session({
  secret: 'a cool secret',
  key: 'mongo_sid',
  cookie: { maxAge: hour * 8, secure: false },
  resave: true,
  saveUninitialized: true,
  store: new MongoStore({
    url: 'mongodb://@localhost:27017/demodb'
  })
}));

app.use(function(req, res, next) {
  if (req.url === '/favicon.ico') {
    return
  }

  var sess = req.session;
  var id = req.sessionID; // session ID, 只读
  console.log(sess, id);

  if (sess.views) {
    sess.views++;
  } else {
    sess.views = 1;
  }

  res.setHeader('Content-Type', 'text/html');
  res.write('<p>views: ' + sess.views + '</p>');
  res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>');
  res.write('<p>httpOnly: ' + sess.cookie.httpOnly + '</p>');
  res.write('<p>path: ' + sess.cookie.path + '</p>');
  res.write('<p>secure: ' + sess.cookie.secure + '</p>');
  res.end();
});

app.listen(4000);
Nach dem Login kopieren

Aktualisieren Sie nach dem Ausführen die Browserseite und stellen Sie fest, dass die folgenden Sitzungsinformationen in der Sitzungssammlung gespeichert wurden die demodb-Datenbank.

Was ist eine Sitzung im Knoten? Wie benutzt man?

Manche fragen sich vielleicht: Das Ergebnis ist sichtbar, aber was ist dabei passiert?
Tatsächlich generiert die Sitzungs-Middleware ein session对象 (das Cookie-Informationen enthält). Dieses Sitzungsobjekt wird gleichzeitig in der MongoDb-Datenbank gespeichert , der Browser-Client Der Client speichert das Cookie automatisch in diesem Sitzungsobjekt. Beachten Sie, dass der Browser das Cookie speichert, nicht das Sitzungsobjekt.
Dieses Cookie hat eine Ablaufzeit. Die im obigen Code festgelegte Ablaufzeit beträgt beispielsweise 8 Stunden. Mit anderen Worten: Dieses Cookie verschwindet nach 8 Stunden automatisch im Browser.

Verwandte Empfehlungen:

Was ist Sitzung?

So verwenden Sie socket.io_node.js im Express des Knotens

Das obige ist der detaillierte Inhalt vonWas ist eine Sitzung im Knoten? Wie benutzt man?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So sortieren Sie den MongoDB -Index So sortieren Sie den MongoDB -Index Apr 12, 2025 am 08:45 AM

Sortierindex ist eine Art von MongoDB -Index, mit dem die Sortierung von Dokumenten in einer Sammlung nach bestimmten Feldern sortiert werden kann. Durch das Erstellen eines Sortierindex können Sie die Ergebnisse der Abfrageergebnisse ohne zusätzliche Sortiervorgänge schnell sortieren. Zu den Vorteilen gehören schneller Sortieren, Überschreibungsanfragen und On-Demand-Sortieren. Die Syntax ist db.collection.createinNex ({field: & lt; sortieren order & gt;}), wobei & lt; sortieren order & gt; ist 1 (aufsteigende Ordnung) oder -1 (absteigende Reihenfolge). Sie können auch Multi-Field-Sortierindizes erstellen, in denen mehrere Felder sortiert werden.

PostgreSQL -Leistungsoptimierung unter Debian PostgreSQL -Leistungsoptimierung unter Debian Apr 12, 2025 pm 08:18 PM

Um die Leistung der PostgreSQL -Datenbank in Debian -Systemen zu verbessern, müssen Hardware, Konfiguration, Indexierung, Abfrage und andere Aspekte umfassend berücksichtigt werden. Die folgenden Strategien können die Datenbankleistung effektiv optimieren: 1. Hardware -Ressourcenoptimierungsspeichererweiterung: Angemessener Speicher ist für Cache -Daten und -Indexes von entscheidender Bedeutung. Hochgeschwindigkeitsspeicher: Die Verwendung von SSD-SSD-Laufwerken kann die E/A-Leistung erheblich verbessern. Multi-Core-Prozessor: Nutzen Sie die Verarbeitung von Multi-Core-Prozessoren voll und ganz, um eine parallele Abfrageverarbeitung zu implementieren. 2. Datenbankparameter-Tuning Shared_Buffers: Gemäß der Einstellung der Systemspeichergröße wird empfohlen, sie auf 25% -40% des Systemspeichers einzustellen. Work_Mem: steuert den Speicher von Sortier- und Hashing -Operationen, normalerweise auf 64 MB auf 256 m eingestellt

MongoDB vs. Oracle: Datenmodellierung und Flexibilität MongoDB vs. Oracle: Datenmodellierung und Flexibilität Apr 11, 2025 am 12:11 AM

MongoDB eignet sich besser für die Verarbeitung unstrukturierter Daten und schneller Iteration, während Oracle besser für Szenarien geeignet ist, die eine strenge Datenkonsistenz und komplexe Abfragen erfordern. 1. Das Dokumentmodell von MongoDB ist flexibel und geeignet für den Umgang mit komplexen Datenstrukturen. 2. Das Beziehungsmodell von Oracle ist streng, um die Datenkonsistenz und die komplexe Abfrageleistung sicherzustellen.

So optimieren Sie die Leistung von Debian Readdir So optimieren Sie die Leistung von Debian Readdir Apr 13, 2025 am 08:48 AM

In Debian -Systemen werden Readdir -Systemaufrufe zum Lesen des Verzeichnisinhalts verwendet. Wenn seine Leistung nicht gut ist, probieren Sie die folgende Optimierungsstrategie aus: Vereinfachen Sie die Anzahl der Verzeichnisdateien: Teilen Sie große Verzeichnisse so weit wie möglich in mehrere kleine Verzeichnisse auf und reduzieren Sie die Anzahl der gemäß Readdir -Anrufe verarbeiteten Elemente. Aktivieren Sie den Verzeichnis -Inhalt Caching: Erstellen Sie einen Cache -Mechanismus, aktualisieren Sie den Cache regelmäßig oder bei Änderungen des Verzeichnisinhalts und reduzieren Sie häufige Aufrufe an Readdir. Speicher -Caches (wie Memcached oder Redis) oder lokale Caches (wie Dateien oder Datenbanken) können berücksichtigt werden. Nehmen Sie eine effiziente Datenstruktur an: Wenn Sie das Verzeichnis -Traversal selbst implementieren, wählen Sie effizientere Datenstrukturen (z.

So setzen Sie den Befehl mongoDB So setzen Sie den Befehl mongoDB Apr 12, 2025 am 09:24 AM

Um eine MongoDB -Datenbank einzurichten, können Sie die Befehlszeile (Verwendung und db.CreateCollection ()) oder die Mongo -Shell (Mongo, Verwendung und DB.CreateCollection ()) verwenden. Weitere Einstellungsoptionen umfassen das Anzeigen von Datenbank (anzeigen DBS), Ansichtskollektionen (Sammlungen anzeigen), das Löschen von Datenbank (db.dropdatabase ()), das Löschen von Sammlungen (db. & Amp; lt; Collection_Name & amp;

NoSQL verstehen: Schlüsselmerkmale von Redis NoSQL verstehen: Schlüsselmerkmale von Redis Apr 13, 2025 am 12:17 AM

Zu den wichtigsten Merkmalen von Redis gehören Geschwindigkeit, Flexibilität und Reich Datenstrukturunterstützung. 1) Geschwindigkeit: Redis ist eine In-Memory-Datenbank, und Lese- und Schreibvorgänge sind fast augenblicklich und für Cache und Sitzungsverwaltung geeignet. 2) Flexibilität: Unterstützt mehrere Datenstrukturen wie Zeichenfolgen, Listen, Sammlungen usw., die für die komplexe Datenverarbeitung geeignet sind. 3) Unterstützung bei der Datenstruktur: Bietet Zeichenfolgen, Listen, Sammlungen, Hash -Tabellen usw., die für unterschiedliche Geschäftsanforderungen geeignet sind.

Redis: Identifizierung seiner primären Funktion Redis: Identifizierung seiner primären Funktion Apr 12, 2025 am 12:01 AM

Die Kernfunktion von Redis ist ein Hochleistungs-In-Memory-Datenspeicher- und Verarbeitungssystem. 1) Hochgeschwindigkeitsdatenzugriff: Redis speichert Daten im Speicher und bietet Lese- und Schreibgeschwindigkeit auf Mikrosekunden. 2) Reiche Datenstruktur: Unterstützt Zeichenfolgen, Listen, Sammlungen usw. und passt an eine Vielzahl von Anwendungsszenarien. 3) Persistenz: Behalten Sie Daten an, um durch RDB und AOF zu diskutieren. 4) Abonnement veröffentlichen: Kann in Nachrichtenwarteschlangen oder Echtzeit-Kommunikationssystemen verwendet werden.

So verschlüsseln Sie Daten in Debian MongoDB So verschlüsseln Sie Daten in Debian MongoDB Apr 12, 2025 pm 08:03 PM

Verschlüsseln Sie die MongoDB -Datenbank in einem Debian -System erfordert die folgenden Schritte: Schritt 1: Stellen Sie zuerst die MongoDB -Installation durch, dass Ihr Debian -System MongoDB installiert hat. Wenn nicht, lesen Sie bitte das offizielle MongoDB-Dokument für die Installation: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/step 2: Generieren Sie die Verschlüsselungsschlüsseldatei Erstellen Sie eine Datei, die die Verschlüsselungsschlüssel enthält, und setzen

See all articles