快速会话在 JQuery Get Call 后不持久



我正在尝试从用户那里保存这个名为server的变量。提交后,他们转到另一个页面。在该页面上,我验证他们的server是否存在,如果没有,则将其发回。

当我运行 post 请求时,会话被保存,因为我立即通过 get 请求检查它是否存在(通过客户端(。但是,如果我刷新页面,则不再定义会话,并且用户将被送回家(使用日志验证了这一点(。我认为这与饼干有关,但我似乎无法让它工作。

这是我的.js路线:

const session = require('express-session');
const express = require("express");
const router = express.Router();
router.use(session({
secret: 'ssshhhhh',
resave: false,
saveUninitialized: true,
cookie: { secure: false }
}));
router.get('/check', (req, res) => {
let sesh = req.session;
console.log("Checking server exists: " + sesh.server);
res.send(sesh.server);
});
router.post('/login', (req, res) => {
let sesh = req.session;
sesh.server = req.body.server;
console.log("Setting server:  " + sesh.server);
res.send(sesh.server);
});
module.exports = router;

这就是两者都返回承诺的请求的方式:

function setSession(value) {
return $.post("/sessions/login", { 'server': value }).then();
}
function getSession() {
return $.get("/sessions/check").then();
}

朋友的简单解决方案。不能在路由中实例化中间件。只需将中间件实例化移动到 app.js。

最新更新