我有一個微服務架構應用程序。我有一個CompanyService,一個OrderService和一個TransactionSevice。用戶登錄後,他可以加載公司的所有訂單。所以訂單有一個CompanyId。然後它加載該訂單的所有交易,因此該交易具有OrderId。我正在經歷一些安全思想。我如何確保用戶只加載或保存屬於他公司的訂單的交易。我的意思是TransactionService不需要了解公司(CompanyId)。這是我應該保存之前檢查的東西嗎?例如檢查orderid是否屬於公司或存在其他模式?微服務架構澄清
感謝
這聽起來像是一個完美的用例,將功能分解爲微服務並不合適。因此,如果所有數據實際上都是從同一個數據庫加載的話。如果我們暫時認爲split *有某種意義或必要性,那麼顯然服務需要一種方法來驗證用戶(可能通過某種基於令牌的基礎架構)以及驗證個人記錄訪問的方式依靠其他服務。如果你不能利用自然關係,後者尤其會變得非常尷尬。 –
對於第二@ JeroenMostert的評論,如果在其他服務(以及這些服務的數據)不可用的情況下,他們可以執行他們的工作,那麼您應該只將事情分解爲單獨的服務(微或不)。如果這不切實際,不要分割它們。 –
你們都是對的,但是,沿着微服務的道路,你總是會因爲打破了DB模型而無法在FK上進行中繼,所以總是會出現這種問題。否則,你將永遠被困在一個龐大的單一數據庫中。我現在正在實現Azure AD B2C,這樣我就可以向用戶添加自定義屬性並在微服務中檢索其信息。 – Matteo