http://www.javascriptkit.com/javatutors/cookie.shtml
Les cookies de session uniquement, d'autre part, stockent des informations dans la mémoire du navigateur et sont disponibles pour la durée de la session du navigateur. En d'autres termes, les données stockées dans un cookie de session sont disponibles à partir du moment du stockage jusqu'à la fermeture du navigateur. Passer d'une page à l'autre pendant cette période n'efface pas les données.
Comment puis-je y parvenir en utilisant Express.js ?
Voici ce que je voulais (en quelque sorte). Lorsque je ferme le navigateur, les informations disparaissent.
var express = require('express');
var app = express.createServer();
var MemoryStore = require('connect/middleware/session/memory');
app.use(express.bodyDecoder());
app.use(express.cookieDecoder());
app.get('/remember', function(req, res) {
res.cookie('rememberme', 'yes', { expires: new Date() - 1, httpOnly: true });
});
app.get('/', function(req, res){
res.send('remember: ' + req.cookies.rememberme);
});
app.listen(4000, '127.0.0.1');
Tout d'abord, ce site Web est un endroit horrible où aller.
Passons maintenant à la question.
Quelles sont réellement les sessions:
Session ID
ou court SID
- avec les données de session stockées sur le serveur.Express.js prend en charge les sessions intégrées .
Ce que l'exemple montre:
L'installation de Redis nécessite un certain travail, mais il est également possible d'utiliser le magasin de mémoire intégré d'Express.js:
var express = require('express');
var app = express.createServer();
var MemoryStore = require('connect/middleware/session/memory');
app.use(express.bodyDecoder());
app.use(express.cookieDecoder());
app.use(express.session({ store: new MemoryStore({ reapInterval: 60000 * 10 }) }));
app.get('/', function(req, res){
req.session.visitCount = req.session.visitCount ? req.session.visitCount + 1 : 1;
res.send('You have visited this page ' + req.session.visitCount + ' times');
});
app.listen(4000);
Cela gardera simplement une trace du nombre de fois que vous avez visité la page, fermé votre navigateur et rouvert. Les comptes seront toujours là.
Vous pouvez en savoir plus sur les options de MemoryStore
, comme la durée de vie maximale d'une session, etc. ici .
app.use(express.session({cookie: { path: '/', httpOnly: true, maxAge: null }, secret:'eeuqram'}));
Ce qui précède fonctionne sur IE8, Firefox et Chrome. La pièce importante est maxAge: null
app.get('/remember', function(req, res) {
res.cookie('rememberme', 'yes', { expires: 0, httpOnly: true });
});
Cela créera un cookie de session. À la fermeture du navigateur, il sera effacé!
Voici le code mis à jour pour réponse d'Alfred (session utilisant Express.js).
var express = require('express');
var app = express.createServer();
var MemoryStore = require('/home/node/node_modules/connect/lib/middleware/session/memory');
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
key: 'some-key',
secret: 'some-We1rD sEEEEEcret!',
store: new MemoryStore({ reapInterval: 60000 * 10 })
}));
app.get('/', function(req, res) {
req.session.visitCount = req.session.visitCount ? req.session.visitCount + 1 : 1;
res.send('You have visited this page ' + req.session.visitCount + ' times');
});
app.listen(4000);