【问题标题】:Express session not persisting after JQuery Get Call在 JQuery Get Call 之后,Express 会话不会持续存在
【发布时间】:2020-06-30 02:45:45
【问题描述】:

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

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

这是我的 sessions.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();
}

【问题讨论】:

    标签: javascript jquery node.js express express-session


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-12-14
      • 1970-01-01
      • 2014-08-28
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2015-06-15
      相关资源
      最近更新 更多