快速会话不持久

时间:2021-06-26 06:05:11

标签: node.js reactjs express session

我正在制作一个 React 项目,我使用 Express 作为后端。我将 http://mini-api.moonlab.ga 设置为 Express 服务器的虚拟主机。

我使用 Fetch 向 express 服务器发送了 HTTP 请求:

fetch("http://mini-api.moonlab.ga/login/", {
    credentials: "include"
})

正如我所料,出现了 CORS 错误。所以我安装了 cors 包,并在 Node.js 中设置了这样的代码:

app.use(cors({
    origin: true,
    credential: true
}));

我像这样从服务器响应客户端:

app.get("/login", (req, res) => {
    const session = req.session;
    if (session.miniAccount == undefined) {
        session.miniAccount = Math.floor(Math.random() * 1000000);
    }

    res.writeHead(200, {"Access-Control-Allow-Credentials": true});
    res.write(String(session.miniAccount));
    res.end();
})

在我这样做之后,没有任何 CORS 错误,但会话不会持续。当我再次发送请求时,会话数据不断变化。

那么如何让会话持久化?

服务器的会话代码:

app.use(express_session({
    secret: secret.app_key,
    resave: false,
    saveUninitialized: true
}));

2 个答案:

答案 0 :(得分:1)

我自己通过编辑 package.json 解决了这个问题。

我在 "proxy": "mini-api.moonlab.ga" 中添加了 package.json

我编辑了 fetch()

  • 上一个
fetch("http://mini-api.moonlab.ga/login")
fetch("/login")

它奏效了。

答案 1 :(得分:0)

您可以尝试在 cookie 中设置 maxAge 值

...
const session = require("express-session");
...

app.use(
    session({        
        secret:  secret.app_key,
        resave: false,
        saveUninitialized: true
        cookie: {          
            maxAge: 3600000 //session expires in 1 hr
        }
    })
);
相关问题