Мне сложно понять роль файла cookie, который сгенерирован в пакете express-session
.Экспресс-сессия Управление Cookie
Таким образом, в приведенном ниже коде:
var session = require('express-session')
var store = require('session-file-store')(session)
app.use(session({
name: 'session-id',
secret: 'sdafjlkdashf34khrjke'
saveUninitialized: true,
resave: true,
store: new Store()
})
func auth (req, res, next) {
if (!req.session.user) {
req.session.user = 'admin'
next()
}else {
console.log(req.session)
}
}
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
Так по существу в простом фрагменте кода выше, всякий раз, когда пользователь делает запрос к серверу (например, это: localhost:3000/
) 3 вещи будут происходить:
- Новый объект сеанса будет создан для этого конкретного клиента.
- В этом новом сеансовом объекте куки-файл будет автоматически прикреплен для этого конкретного клиента.
- Наконец, поскольку я использую хранилище session-файлов, ТОЛЬКО информация о файлах cookie (а не объект сеанса) будет сохранена в папке
session
на моей локальной машине.
Итак, скажем, 50 файлов cookie хранятся в папке session
, так как 50 клиентов сделали запрос на мой сервер.
Так что мой вопрос, когда один из этих 50 пользователей делает еще один запрос на мой сервер, как это express-session
знать, какие куки объект (из папки session
), чтобы выбрать и прикрепить к req
объекту для использования в коде.
Хорошо, поэтому после ряда исследований я понял, что когда конкретный клиент (скажем, ваш браузер) делает запрос на мой сервер, то на основе домена клиента (другими словами, IP-адрес, я думаю? Кто-то может исправить меня здесь, в каком домене) сервер знает, какой файл cookie принадлежит этому клиенту. Подробнее объясняется здесь: http://stackoverflow.com/questions/8805958/how-browsers-know-what-cookies-to-send-to-server-when-requesting. – LP496