2017-06-16 43 views
0

我有一个通过访问令牌访问资源集的系统。所以当客户需要访问某个特定的资源时,他们要求输入令牌(一个资源 - 一个令牌)。我需要制作一次性(或至少在时间上有限制的)令牌,以确保即使令牌泄露,它们也很快就会失效。如何在CQRS系统中正确地进行一次性查询?

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

回答

0

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

  1. 边缘检查授权(使用提供的令牌)和 与查询要求的查询处理程序,一起/令牌信息
  2. 查询返回的结果
  3. 边缘公布的事件“TokenHasBeenUsed”
  4. 边缘返回查询结果
  5. 令牌提供程序使用该事件并使令牌无效。

您也可以构建它的日程安排,如果不使用,一段时间后令标记无效。另外,你也可以有一个使用计数器或其他东西,并且它不需要混合到边缘或查询处理程序。

+0

谢谢您的回复。但是,你的条件是什么“边缘”?无论如何,无国籍的JWT令牌解决了我的问题。我不需要做明确的失效,因为令牌在很短的时间段后变得无效(在我的情况下它是1分钟) –

+0

边缘是一线服务,即API层。智威汤逊当然也是一个很好的解决方案,但它有其局限性。 –