Я до сих пор довольно новичок в узле и экспериментирую с управлением сеансом с помощью express + redis.NodeJS Redis Session не сохраняется на переадресации браузера
Мой текущий проект требует, чтобы пользователь перенаправлялся на внешний сайт для аутентификации. После аутентификации браузер перенаправляется на URL-адрес обратного вызова, который я указал. Я требую, чтобы данные сеанса сохранялись в перенаправлении.
Моя реализация выглядит следующим образом:
- Пользователь запускает POST вызов к серверу nodeJS, где сохраняются данные для сессии
req.session.foo = 'bar'
, а затем возвращать auth_url в браузер. - браузер перенаправляет с помощью
window.location.replace(auth_url);
на внешний сайт для аутентификации - После аутентификации браузер перенаправляется на
localhost:3000/mycallbackurl
, который является маршрутом определено ниже (простите за плохое форматирование):
router.get ('/ mycallback ', function (req, res) {
console.log("data at callback: " + req.session.foo); //do other stuff
});
Моя проблема в том, что консоль печатает: data at callback: undefined
по маршруту обратного вызова.
Это проблема с моей настройкой redis, или я просто что-то пропустил здесь?
До сих пор я убедился, что redis работает, увеличивая значение, сохраненное в req.session, при каждом обновлении браузера и его печати.
Моя установка Redis выглядит следующим образом:
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(cookieParser());
app.use(session({ store: new RedisStore({
host: 'localhost',
port: 6379,
db: 1,
cookie: { maxAge: (24*3600*1000*30)},
}), secret: 'keyboard cat',
saveUninitialized: true,
resave: true
}));
Спасибо за чтение и с нетерпением жду ваших ответов!
Я использую Redis для сохранения данных на диск, а затем доступа к этим данным после перенаправления. Является ли моя реализация неправильной? Спасибо за ваш ответ! – garrethp
Я имею в виду, что вам нужно переназначить значение для req.session.foo для каждого запроса. Не имеет значения, исходит ли это значение от Redis или в другом месте. Я смотрю на ваш код, и я не вижу никакого назначения значения для req.session.foo, поэтому он будет не определен, когда вы ссылаетесь на него. – takinola
Спасибо за ваш ответ еще раз. В маршруте обратного вызова мне нужны данные, которые ранее были в 'req.session.foo'. Как я могу сохранить данные и получить их после перенаправления? Неужели Редис может помочь мне в этом? – garrethp