Какова дополнительная информация в строке cookie connect.sid, кроме идентификатора сеанса? - PullRequest
0 голосов
/ 18 мая 2019

Я использую Node JS с экспресс-сессией.

В одном из ответов на этот вопрос рекомендуется использовать req.cookies ['connect.sid'] для получения идентификатора сеанса.В другом ответе предлагается использовать req.sessionID

. Когда я сравниваю два, req.cookies['connect.sid'] имеет строку, подобную следующей:

s: G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg.z1 / HrHTfndRqKpWs0WWXW0WW0W0W09W091010 *

req.sessionID имеет следующую строку:

G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg

Если вторая строка является идентификатором сеанса (G1wOJoUAhhemRQqCs7dAGlMIk5ZGaJUg), то чтодругая информация в файле cookie connect.sid?

Попытка поиска ответа через Google и другие веб-сайты безуспешно.

Спасибо,

Даррен

1 Ответ

0 голосов
/ 18 мая 2019

express-session хранит всю информацию о сеансе на стороне сервера.Если вы используете базу данных sql, у вас будет таблица для ваших сессий, которая будет выглядеть следующим образом:

             sid                 |      sess       |     expire
R02GJn2GoyaqRyten1BEGbHa0XCbj529 | {"cookie": "originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"mybool":true,"userid":16}

Это ответ на ваш вопрос и краткое объяснение того, что означают данные, sessionIDэто просто (первичный) ключ для доступа к данным, доступным только на стороне сервера.

Теперь, исходя из вашего вопроса, похоже, что вы планируете неправильно использовать экспресс-сеанс.

Комуиспользовать экспресс-сессию на вашем экспресс-сервере, вы бы включили его так:

const session = require('express-session');
app.use(session({
    name : 'mycookie',
    secret : 'mysecret',
    saveUninitialized : false,
    resave : true
}));

, и каждый запрос, который идет на все последующие маршруты после этого, будет иметь атрибут .session.В любом случае вам никогда не нужно обращаться к идентификатору сеанса самостоятельно, промежуточное программное обеспечение само проверяет подлинность каждого запроса на соответствие хранилищу , которое вы использовали для экспресс-сеанса .

app.get('/givemeasession',function(req,res,next){
    req.session.mybool = true;
    req.session.somedata = 'mystring';
    req.session.evenobjects = { data : 'somedata' };
    res.send('Session set!');
});

app.get('/mysession',function(req,res,next){
    res.send('My string is '+req.session.somedata+' and my object is '+JSON.stringify(req.session.evenobjects));
});

Итог: вам не следуетВам никогда не нужно обращаться к cookie-файлам самостоятельно или делать что-либо с ним, потому что промежуточное программное обеспечение автоматически обрабатывает любые аутентификации cookie-файлов.

...