我有一個問題,那就是確保在我的SOA應用程序中正確授權的最佳實踐/模式是什麼。我有一堆允許用戶訪問某些數據(存儲在數據庫中)的服務。典型場景的一個例子是...在SOA中實現授權
我們有一個EMPLOYEE表,它與PROJECT有一對多的關係。所以一個僱員可以有很多項目。另外每個員工都屬於一個地區。系統的用戶可以編輯員工和項目的信息。但是,每個用戶只能管理少數幾個區域的數據,因此只能修改屬於用戶管理區域的員工及其項目。因此,用戶可以訪問區域A,B,C,並且可以編輯區域A員工的員工/項目數據,但不能編輯區域Z員工。
我有一項服務可讓您編輯員工,另一項可編輯項目。類似地,項目與其他實體有關係,例如, SCHEDULE,我也有服務來編輯這些內容。
但是我的問題是,用戶是否可以通過調用相應的服務來編輯項目或計劃,取決於員工(與這些項目和計劃相關的)屬於哪個區域。因此,對於每一項修改項目或計劃的服務或從員工開始的該層次數據中的任何實體,我都必須查詢相應的員工並強制執行區域約束。考慮到數據庫調用和連接數量(我真正的例子有很多這樣的實體和相應的服務),這可能會變得非常昂貴,我必須在每次服務調用時進行操作。針對我的場景是否有更優雅的輕量級解決方案?