背景 每個項目都有一個與其關聯的帳戶。每個用戶都可以有權訪問零到多個帳戶。這又意味着每個用戶只能根據用戶的帳戶權限訪問項目的子集。對象模型授權 - OO設計問題
當用戶登錄到應用程序時,用戶對象被加載,並且在該點也加載了帳戶權限。該User對象存儲在應用程序的緩存中。項目根據需要加載。
問題 什麼是強制執行賬戶限制的最佳方式?我們希望將它從實際的表示邏輯中抽象出來,但我們認爲將授權邏輯放在Project對象內並不是一個好方法,因爲這取決於User對象。你們有什麼感想?
實施例:(aspx頁面代碼後面)
Project oProject = New Project(projectId); //Pass an Int32 here
if (oProject.Load()) //This operation needs to check user permissions somehow
{ /* Do stuff */ }
那麼我會將用戶對象傳遞給項目對象嗎? – 2009-08-05 15:23:28
間接地,通過它的接口。在這個解決方案中,你將無法避開項目和用戶知道這個接口的事實,但是項目不需要知道它是否正在與用戶或TestHarness等進行交談。 – DanDan 2009-08-05 15:28:57