Mit express js
mit express-session
Ich habe diese klassische Haupt-Session Middleware, die maxAge
des Cookies zu einer Stunde definiert.So schließen Sie Routen von der Verlängerung Express-Cookie Ablaufdatum
var express = require('express');
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var ExpressServer = express();
ExpressServer.use(
session(
{
secret : 'secret',
// Forces session to be saved even when unmodified
resave : false,
rolling : true,
// Forces session to be saved even when unmodified
saveUninitialized : true,
// Controls result of unsetting req.session (through delete, setting to null)
unset : 'destroy',
cookie: {
path: '/',
proxy: secureCookie,
secure: secureCookie,
httpOnly: true,
maxAge: 1000 * 60 * 60
},
store: new RedisStore(
{
client: RedisClient
}
)
}
)
);
Allerdings habe ich einige Strecken, die in regelmäßigen Abständen aufgerufen werden (alle 30 Sekunden) vom Client zum Server, sagen wir, einer von ihnen ist:
ExpressServer.get(
'/periodic',
function (req, res, next) {
//doSomthing()
}
da diese Strecke regelmäßig aus aufgerufen wird der Kunde, ich brauche, dass es keine Verlängerung des Ablaufdatums des Cookies (falls der Benutzer seinen Browser geöffnet lässt) und verlassen das aktuelle Ablaufdatum (von der letzten nicht periodischen Route Anruf)
Wie kann Ich erreiche es?
In Bezug auf Ihre erste Option, habe ich versucht, es aber nicht zu helfen scheint, da die 'maxAge' Parameter das gleiche aus dem Aufruf bleibt vor, so dass es es trotzdem zu erneuern. Könnten Sie bitte Ihre zweite Option erklären? Wie wird es hier helfen, die "rollende" Option auszuschalten? Das 'maxAge' wirkt sich immer noch auf die Sitzung aus. – TomG
@TomG [gemäß der Dokumentation] (http://expressjs.com/en/resources/middleware/session.html#rolling) Das Setzen von 'rolling' auf' true' bedeutet, dass "das Ablaufdatum auf das Original [' 'zurückgesetzt wird maxAge "] (http://expressjs.com/en/resources/middleware/session.html#cookiemaxage), um den Ablauf-Countdown zurückzusetzen." Wenn Sie den Wert für diese bestimmte Route auf "false" setzen, wird der Sitzungscookie nicht mit einer neuen Ablaufzeit aktualisiert. – idbehold
gut, ich habe es versucht und es hat nicht funktioniert. Ich berühre die Sitzung, also ist das vielleicht das Problem? Ich brauche die Sitzungsdaten, nur um das Ablaufdatum nicht zu aktualisieren – TomG