В настоящее время я создаю свой серверный код в Express. js (я новичок в node.js, express. js). Я понимаю, что, основываясь на документации express -сессии (здесь https://www.npmjs.com/package/express-session), идентификатор сеанса хранится в файле cook ie для отправки клиенту, а не данным сеанса. Однако, когда я делаю I console.log(req.session)
, я получаю следующее в выводе консоли
Session {
cookie: {
path: '/',
_expires: 2020-01-16T22:45:44.384Z,
originalMaxAge: 86400,
httpOnly: true
}
}
Идентификатор сеанса не указан выше. Я знаю, что если я сделаю console.log(req.session.id)
или console.log(req.sessionID)
, я получу случайно сгенерированный идентификатор сессии. Проблема в том, что мой повар ie не указал sessionId. Мой код, размещенный ниже, находится в моем app.js
и является инициализацией моего сеанса и хранилища сеансов.
app.js
const redis = require('redis');
const cryptoRandomString = require('crypto-random-string');
const session = require('express-session');
const routes = require('./routers');
var app = express();
//initialize Redis Store
let redisStore = require('connect-redis')(session)
let client = redis.createClient();
//app.get('/', (req, res) => res.send('App is working'));
//initialize session
app.use(session({
genid: function(req) {
return cryptoRandomString({length: 10}); //use UUIDs for sessionIDs
},
secret: "keyboard cat",
store: new redisStore({host: 'localhost', port: 6379, client: client, ttl: 260}),
resave: false,
saveUninitialized: false,
name: "sid",
cookie: {httpOnly: true, maxAge: 86400}
}));
app.use('/', routes);
app.use('/api/idToken', routes);
app.listen(5000, () => {
console.log("server up");
});
module.exports = {
app
};
Кроме того, как именно я должен отправить повара ie клиенту с именем в Set-Header
? Я должен использовать res.cookie()
?