如何在CQRS系统中正确进行一次性查询



我有一个系统,它通过访问令牌可以访问一组资源。因此,当客户端需要访问某些特定资源时,他们会要求提供令牌(一个资源 - 一个令牌(。我需要制作一次性(或至少在时间限制(代币,以确保即使代币泄露,它们也会很快变得不活跃。

在基于 CQRS 的系统中实现这一目标的正确方法是什么?查询资源不应更改系统状态。换句话说 - 我们不能使查询处理程序中的令牌失效。可以吗?

这些是不同的问题。我会做什么:

  1. 边缘检查授权(使用提供的令牌(和调用查询处理程序以及查询/令牌信息
  2. 查询返回结果
  3. 边缘发布事件"TokenHasBeenUsed">
  4. 边缘返回查询结果
  5. 令牌
  6. 提供程序使用事件并使令牌无效。

您也可以按计划构建它,如果未使用,则在一段时间后使令牌失效。另外,您还可以使用使用计数器或其他东西,所有这些都不需要混合到边缘或查询处理程序。

最新更新