Печенье только для сессии для Express.js

http://www.javascriptkit.com/javatutors/cookie.shtml

cookie только для сеанса, с другой стороны, хранит информацию в браузера, и доступна для продолжительность сеанса браузера. Другими словами, данные, хранящиеся внутри файл cookie сеанса доступен из время хранения, пока браузер не будет закрыто. Перемещение со страницы на страницу в течение этого времени не стирает данных.

Как я могу достичь этого, используя Express.js?

Ответ 1

Следующее - это то, что я хотел (вроде). Когда я закрою браузер, информация исчезнет.

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');

Ответ 2

Прежде всего, этот веб-сайт - это ужасное место, чтобы пойти.

Теперь на вопрос.

Какие сеансы на самом деле:

  • Данные хранятся на стороне сервера.
  • Выдается файл cookie, содержащий идентификатор.
  • Этот идентификатор отправляется обратно на сервер по каждому запросу из-за того, что браузер отправляет файлы cookie.
  • Теперь сервер может повторно связать идентификатор в cookie - обычно называемый Session ID или короткий SID - с данными сеанса, хранящимися на сервере.

Express.js поддерживает сеансы, созданные в.

Что показывает пример:

  • Настройка промежуточного программного обеспечения Express.js
  • Использование стороннего хранилища для сохранения данных сеанса, в данном случае Redis (что ИМО переполняет вашу проблему atm)

Для установки Redis требуется довольно много работы, но также можно использовать встроенный накопитель 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);

Это будет просто отслеживать, сколько раз вы посещали страницу, закрыли свой браузер и повторно открыли. Счет будет по-прежнему присутствовать.

Подробнее о параметрах MemoryStore вы можете найти, например, максимальный срок службы сеанса и т.д. здесь.

Ответ 3

app.use(express.session({cookie: { path: '/', httpOnly: true, maxAge: null }, secret:'eeuqram'}));

Вышеописанное работает в IE8, Firefox и Chrome. Важная часть maxAge: null

Ответ 4

Ниже приведен обновленный код для ответа Альфреда (сеанс с использованием 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);

Ответ 5

app.get('/remember', function(req, res) {
   res.cookie('rememberme', 'yes', { expires: 0, httpOnly: true });
 });

Это установит cookie сеанса. При закрытии браузера он будет удален!