带有 express-session 的 express-tsoa 上的会话重新生成问题

问题描述 投票:0回答:0

我目前正在尝试将我的 express 应用程序迁移到 tsoa,我最初使用 express-session 进行身份验证。 我目前正在对兼容性进行一些测试,但我发现当我尝试重新生成标题时似乎存在一些问题。

控制器内的两条路线:

  @Get("/refreshauth")
  public async test_refresh_auth(
    @Request() req: any
  ): Promise<any> {
    await req.session.regenerate(function (err: any) {});
    console.log(req.sessionID)
    return Promise.resolve({message: 'success'});
  }

  @Get("/authtest")
  public async test_auth(
    @Request() req: any
  ): Promise<any> {
    req.session.test = (req.session.test) ? req.session.test + 1 : 1;
    console.log(req.sessionID)
    console.log(req.session.test);
    return Promise.resolve({message: 'success'});
  }

如果我只测试 test_refresh_auth 函数就可以正常工作。但是,当我在执行几次 test_auth 后尝试 test_refresh_auth 函数时,出现错误。

[错误] :: 错误:无法找到要触摸的会话
错误 [ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置标头
[0] 在新的 NodeError (node:internal/errors:400:5)
[0] 在 ServerResponse.setHeader(节点:_http_outgoing:663:11)

我知道发生此错误是因为标头已设置并且可能从正文开始,但我不确定是代码的哪一部分导致了此问题。我认为这是因为 express session 和 tsoa 之间存在一些奇怪的交互。如果有人可以在这里告知问题并提供解决方案,那就太好了。提前致谢。

express session swagger express-session tsoa
© www.soinside.com 2019 - 2024. All rights reserved.