如何在Loopback 4中使用有状态请求?

时间:2018-10-16 10:28:24

标签: loopbackjs

在v3中,我们可以在基础Express上定义中间件,例如express-session,以便在请求对象上添加var temp = new RegExp('^\d+(\.\d{' + precision + '})?$'); 属性。

在v4中,似乎没有与此等效的东西,并且基础Express也没有暴露。

我正在将身份验证提供程序从v3迁移到v4,因此我陷入了困境。我该怎么办?

我尝试了以下解决方法,但没有成功:

session

1 个答案:

答案 0 :(得分:3)

LoopBack团队您好:)

我们尚未考虑支持HTTP会话和有状态请求。理想情况下,会话处理应作为新的Sequence动作实现-参见Sequence docs

class MySequence {
  // skipping constructor with dependencies to be injected

  async handle(context: RequestContext) {
    try {
      // the following line is new
      const session = this.restoreSession(context);

      // the default sequence continues here
      const route = this.findRoute(context.request);
      const params = await this.parseParams(context.request, route);
      const result = await this.invoke(route, params);
      await this.send(context.response, result);
    } catch (error) {
      await this.reject(context, error);
    }
  }
}

序列动作restoreSession应该:

  • 检查请求中是否存在任何会话Cookie
  • 如果提供了cookie,则加载会话,否则可以创建一个新的cookie?
  • 将会话绑定到我们的Context中,以便控制器之类的其他地方也可以通过Dependency Injection接收会话。

您能否在loopback-next中打开一个新的GitHub问题(功能请求),以便我们在那里讨论实现细节?