Node.js 在快速会话中关闭滚动会话不会';行不通

Node.js 在快速会话中关闭滚动会话不会';行不通,node.js,session,cookies,next.js,session-cookies,Node.js,Session,Cookies,Next.js,Session Cookies,我正在使用express-session@1.17.2我的会话实现包。我希望将会话cookie设置为在30分钟内过期,当新请求到来时,我希望cookie的过期日期保持不变(因此它不会更新为server time+maxAge) 我认为我可以通过在中间件配置中将rolling选项设置为false来实现这一点,但它不起作用,每个新请求都会更新cookie的过期时间。我是否对滚动选项有错误的理解?还是我在代码中做错了什么 下面是Next.js应用程序中的端点代码(在pages/api/test目录中)

我正在使用
express-session@1.17.2
我的会话实现包。我希望将会话cookie设置为在30分钟内过期,当新请求到来时,我希望cookie的过期日期保持不变(因此它不会更新为server time+maxAge)

我认为我可以通过在中间件配置中将
rolling
选项设置为
false
来实现这一点,但它不起作用,每个新请求都会更新cookie的过期时间。我是否对
滚动
选项有错误的理解?还是我在代码中做错了什么

下面是Next.js应用程序中的端点代码(在
pages/api/test
目录中):


导出函数运行中间件(
请求:下一个请求,
res:NextapireResponse,
中间件:(…args:any[])=>未知,
) {
返回新承诺((解决、拒绝)=>{
中间件(req,res,(结果:未定义|错误)=>{
如果(错误的结果实例){
返回拒绝(结果);
}
返回解析(结果);
});
});
}
导出常量runSessionMiddleware=async(
请求:下一个请求,
res:NextapireResponse,
):承诺=>{
返回运行中间件(
请求,
物件,
会议({
存储:文件存储,
secret:process.env.SESSION\u secret作为字符串,
resave:false,
saveUninitialized:false,
滚动:错误,
名称:'session_id',
曲奇:{
httpOnly:true,
安全:错误,
sameSite:“松弛”,
maxAge:AUTH_SESSION_持续时间,
},
}),
);
};
常量测试:NextApiHandler=async(req,res)=>{
等待runSessionMiddleware(req、res);
req.session.views=req.session.views?req.session.views+1:1;
res.json({message:'ojaaa'});
};
导出默认测试;

export function runMiddleware(
  req: NextApiRequest,
  res: NextApiResponse,
  middleware: (...args: any[]) => unknown,
) {
  return new Promise((resolve, reject) => {
    middleware(req, res, (result: undefined | Error) => {
      if (result instanceof Error) {
        return reject(result);
      }

      return resolve(result);
    });
  });
}

export const runSessionMiddleware = async (
  req: NextApiRequest,
  res: NextApiResponse,
): Promise<unknown> => {
  return runMiddleware(
    req,
    res,
    session({
      store: fileStore,
      secret: process.env.SESSION_SECRET as string,
      resave: false,
      saveUninitialized: false,
      rolling: false,
      name: 'session_id',
      cookie: {
        httpOnly: true,
        secure: false,
        sameSite: 'lax',
        maxAge: AUTH_SESSION_DURATION,
      },
    }),
  );
};

const test: NextApiHandler = async (req, res) => {
  await runSessionMiddleware(req, res);
  req.session.views = req.session.views ? req.session.views + 1 : 1;
  res.json({ message: 'ojaaa' });
};

export default test;