2008-12-09 84 views
9

我正在盡最大努力設計我的網頁應用程序,圖層之間有良好的分離。我正在使用存儲庫模式,因此有一個由我的Web前端調用的ObjectService調用的SQLObjectRepository。存儲庫模式和分層。我在哪裏申請安全?

在我的對象模型中,用戶與一個或多個區域相關聯,這些區域應過濾他們應該有權訪問的對象。我的問題是,當我查詢對象時,是否將代碼放入服務中以設置對象的權限,或者該代碼是否在存儲庫中?如果用戶是2個區域的成員,我應該將用戶作爲參數傳遞給服務,還是應該將用戶區域傳遞給服務?

回答

3

我想:

  • 寫在這樣一種方式,它可以在你喜歡的任何地方使用的安全檢查。這樣,您可以根據需求的變化進行重構。

  • 如果安全檢查真的會總是申請,將其放置在倉庫層(或更好,在一個方面,如果你的語言支持的話),使多個服務將共享通用的安全,如果他們使用相同的庫。否則,將其放置在服務中(或作用於服務的方面)。

  • 傳遞整個用戶對象到安全檢查機制:

    • 如果安全檢查後變得更加複雜(取決於用戶的其它性質)的API將不會改變;
    • 它使語義更有意義 - 您檢查用戶是否有權執行某些操作,而不是國家/地區列表。
相關問題