2015-12-05 3 views
0

Таким образом, следующий фрагмент показывает, как RedisStore настроен и подбирает sessionID из входящих запросов GET. Однако sessionStore.get(req.cookies['connect.sid']) оценивает по методу undefined.Как получить данные сеанса из RedisStore (connect-redis) с помощью SessionID?

Не могли бы вы указать, что я делаю неправильно? Пример sessionID, который возвращается из req.cookies['connect.sid'] выглядит следующим образом:

 
s:_8pvC4Zju4GjMOvN6Y4ej8SRVYvopn8C.ctuA/+pQnZt96bLgOW1xizHOLI2nBuH4vzO9Agm26Lk 
var expressSession = require('express-session'); 
var RedisStore = require('connect-redis')(expressSession); 

var sessionStore = new RedisStore({host: '127.0.0.1', port: 6379}); 
app.use(expressSession({store: sessionStore, 
         secret: 'xxxx' })); 

app.get("/*", function(req, res, next) { 
    if(typeof req.cookies['connect.sid'] !== 'undefined') { 
    console.log('sessionID: ', req.cookies['connect.sid']); 
    console.log(sessionStore.get(req.cookies['connect.sid'])); 
    } 
    next(); 
}); 
+0

Почему бы не использовать 'req.session'? Если вы не хотите получать данные сеанса для кого-то, кроме пользователя, из текущего запроса? – mscdex

+0

Я пытаюсь получить его с sessionStore, чтобы аутентифицировать пользователя с помощью socket.io. – Matthias

ответ

0

sessionStore.get является методом асинхронным, необходимо передать функцию обратного вызова для этого метода, например:

sessionStore.get(req.cookies['connect.sid'], function (err, session) { 
    console.log(session); 
}) 

Смотреть это документы о express-session.