舉個例子,比方說:如何在Active Directory中存儲組織層次結構並將其用於應用程序?
我有一個組織叫「美國」。我的用戶是「居民」,根據他們的主要地址,每個用戶通常擁有一個城市,縣和州,這些都是具有等級性質的。但是一些用戶可能具有或多或少的級別,取決於他們的位置:例如他們可能沒有一個城市(只有一個縣和一個州),或者如果居住在一個大城市中有一個鄰居,除了城市,縣和州。我事先不知道這個等級會有多深(例如鄰里可能會有更多的細分)。對於層次結構中的每個級別(鄰居,城市,縣和州),我都有零個或多個用戶,他們是該市,縣或州的「經理」。
用戶訪問應用程序,用它們創建工件。應用程序將工件存儲在單獨的數據庫中,比如說SQL Server。用戶可以在創建它時訪問特定的工件,或者他們是創建工件的用戶的鄰居,城市,縣,州等的「管理者」之一。
(爲簡單起見,我只是假設用戶從來沒有給定用戶的整個系統的生命週期不會改變「移動」,即市,縣,和狀態。)
我的問題是:
如果用戶在Active Directory中定義,您是否還將組織結構存儲在Active Directory中?那麼用戶是否是什麼級別的管理者呢?如果你將它存儲在Active Directory中,你會怎麼做?
您會在工件上保存哪些信息,以便您可以快速獲取用戶有權訪問的所有工件的列表,而無需爲數據庫中的每個工件查詢Active Directory?
對於第2點,可能我想象會是SQL Server存儲,每個神器以來,用戶的級別(市,縣,州...)誰創造了它。通過這種方式,搜索可以通過對Active Directory進行查詢來確定用戶是($levels_user_is_manager_of
)的管理者的級別,並且在SQL查詢中選擇用戶有權訪問哪些工件來執行諸如WHERE level in $levels_user_is_manager_of
之類的操作。這些意義是否合理?