NodeJS express-session保存会话只在通话时间

yftpprvb  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(154)

我在node.js和客户端在角他们都在本地主机上运行每次当用户登录到我的网站我保存他的详细信息在express会话和之后在从客户端到服务器的调用.我检查用户是否连接,他的详细信息是否在会话中,但是当用户登录时,会话为空
在此代码中,我保存会话。路由器:

router.post('/login/check', async (req, res) => {
    let result = await createLoginSession(req.session,req.body.name);
    console.log(req.session);
}

模块:

createLoginSession = (session,name) => {
    if(!session) return;
    let ageSession = 1000*60*60*24*30; 
    session.cookie.expires = new Date(Date.now() + ageSession);
    session.cookie.maxAge = ageSession;
    session.clientType = 'STANDART_SINGLE';
    session.name = name;
   
};

它的工作很好,我看到在日志中的会话,但在下一次调用到服务器,我记录会话,它是空的

router.post('/details',async (req, res) => {
   console.log(req.session);
});

我认为这是因为服务器和客户端运行在本地主机每次有新的sessionId我该怎么办?

ahy6op9u

ahy6op9u1#

在这里,我有两个解决方案,曾经为您工作:
1.使用函数从图书馆如果你是使用Express例如:cookie会话或express会话的更多信息都可以阅读他们的文档.(建议如果使用express)
1.现在这个方法不是最好的方法,但它会很好地工作。保存来自req.session的数据在全局数组中,比如sesData或object,当新的req被创建时,将此数据复制到req.session,并且当JS对象被分配给另一个变量时,它通过引用复制,因此该调用的req.session中的更改将反映在sesData上,并且对于下一次调用,您可以再次将其数据复制到req.session(以使其更好地使用中间件来维护会话)。

相关问题