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

时间:2017-06-16 13:50:06

标签: access-token cqrs

我有一个系统,可以通过访问令牌访问资源集。因此,当客户端需要访问某些特定资源时,他们会要求令牌(一个资源 - 一个令牌)。我需要制作一次性(或至少有限时间)令牌,以确保即使令牌泄露,它们也很快会变为非活动状态。

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

1 个答案:

答案 0 :(得分:0)

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

  1. 边缘检查授权(使用提供的令牌)和 调用查询处理程序以及查询/令牌信息
  2. 查询返回结果
  3. 边缘发布事件“TokenHasBeenUsed”
  4. 边缘返回查询结果
  5. 令牌提供程序使用该事件并使令牌无效。
  6. 您还可以构建它的调度,如果不使用,会在一段时间后使令牌无效。此外,您还可以使用使用计数器或其他东西,并且不需要将它们混合到边缘或查询处理程序。