2012-08-10 27 views
2

在DDD的世界中,檢查用戶在域中的角色還是應該在用戶界面中發生?我問的原因是因爲看起來,如果安全和角色是業務需求的一部分,看起來他們應該生活在這個領域。但是,角色檢查的幾乎所有示例都顯示它正在UI層完成。是什麼賦予了?應該在域還是UI層中檢查角色?

回答

2

在一般情況下,有幾個原因,身份驗證和授權的關注在應用程序或用戶界面級別的處理:

從建模的角度來看,這些問題往往不是固有的系統的能力。例如,用戶故事可能會聲明:「作爲操作員,我可以打開機器...」。雖然確保只有操作員能夠訪問機器可能很重要,但機器本身並不關心誰可以打開它。

從實用的角度來看,這些問題通常與域保持分離,以避免將應用程序或域級服務注入實體的必要性。由於實體通常通過ORM框架進行序列化,因此將服務注入實體可能會很麻煩(有關此主題的更多信息,請參閱http://lostechies.com/jimmybogard/2010/04/14/injecting-services-into-entities/)。

+0

如果你正在處理像「操作員」這樣的根,該怎麼辦?它的行爲像'operator.TurnOnMachine()'。操作員也可能有一個聲明/角色列表。 'TurnOnMachine()'方法可以檢查'operator'是否有必要的聲明並允許存在正確的聲明(聲​​明='我可以關閉機器')。雖然我同意機器不知道誰可以打開它,但操作員是這裏的演員。 – 2012-08-10 19:36:50

+0

同意。絕對在UI中。 – 2012-08-15 15:12:21

+0

我在這裏看到的區別是如何使用領域模型與領域模型中如何表示領域模型。在某些情況下,角色可能是您的域的內在和必要部分(例如,選擇您將在視頻遊戲中使用哪個角色),但這與任何身份驗證/授權需求無關。大多數業務應用程序用於建模用戶與之交互的對象或流程,而不是用戶本身。 – 2012-08-16 21:39:52

相關問題