2017-06-16 12 views
0

我有一個通過訪問令牌訪問資源集的系統。所以當客戶需要訪問某個特定的資源時,他們要求輸入令牌(一個資源 - 一個令牌)。我需要製作一次性(或至少在時間上有限制的)令牌,以確保即使令牌泄露,它們也很快就會失效。如何在CQRS系統中正確地進行一次性查詢?

在基於CQRS的系統中實現這一點的正確方法是什麼?查詢資源不應改變系統狀態。換句話說 - 我們不能使查詢處理程序中的令牌無效。我們可以嗎?

回答

0

這些是不同的問題。我會做什麼:

  1. 邊緣檢查授權(使用提供的令牌)和 與查詢要求的查詢處理程序,一起/令牌信息
  2. 查詢返回的結果
  3. 邊緣公佈的事件「TokenHasBeenUsed」
  4. 邊緣返回查詢結果
  5. 令牌提供程序使用該事件並使令牌無效。

您也可以構建它的日程安排,如果不使用,一段時間後令標記無效。另外,你也可以有一個使用計數器或其他東西,並且它不需要混合到邊緣或查詢處理程序。

+0

謝謝您的回覆。但是,你的條件是什麼「邊緣」?無論如何,無國籍的JWT令牌解決了我的問題。我不需要做明確的失效,因爲令牌在很短的時間段後變得無效(在我的情況下它是1分鐘) –

+0

邊緣是一線服務,即API層。智威湯遜當然也是一個很好的解決方案,但它有其侷限性。 –