Печенье только для сессии для 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 сеанса. При закрытии браузера он будет удален!