2

在我的應用程序中添加,更新和刪除各種實體的能力通常由相關用戶之間定義的關係決定。這裏有一個例子:如何處理ASP.NET MVC 4/EF應用程序中的複雜授權?

  1. 基本用戶或他的上司可以創建與用戶相關聯的任務,但只有他的上司可以鎖定任務,使基本的用戶將不再能夠添加/更新/刪除它。在被鎖定之前,兩個人都可以更新任務。

什麼是實現這些類型的複雜和先進的規則處理與用戶的關係和實體的狀態(新的,現有的),以及像可能是定義的用戶,其他的事情,最好的方法與實體關聯的狀態?

感謝

回答

0

在銀行我工作了,我們有這樣的讓整個銀行的層次結構看他們的報告結構貸款的貸款管理系統。例如,市場主管可以立即看到他/她的所有報告的貸款組合。此外,他/她有能力從所有報告的列表中選擇(直接或間接)名稱來查看該員工的組合。我們不得不維護報告結構的HR數據庫。一旦我們有了這些,我們就建立了用戶函數(也可以作爲存儲過程來完成,但用戶函數在我們的LINQ to SQL後端中運行良好)可以讓我們檢查用戶x是否監督用戶y。

因此,在您的示例中,只要您知道誰擁有該任務,並且有權訪問可用於確定任務所有者是否向當前登錄的用戶報告的方法,則應該能夠輕鬆啓用/禁用頁面上的「鎖定」按鈕。

合作就在於創建報告結構DB,並使其保持最新!

3

什麼是實現這些類型的複雜和先進的規則處理用戶的關係和實體的狀態(新的,現有的),以及像也許用戶其他的事情,最好的方法與實體關聯的定義狀態?

您想使用授權標準,即XACML,即可擴展訪問控制標記語言。 XACML是:

  • 由OASIS開發的標準,就像SAML是
  • ,專注於細粒度訪問控制的標準:考慮到用戶信息,資源信息,狀態,和上下文信息的訪問控制
  • 實現基於屬性的訪問控制(ABAC)模型中的標準:用戶信息,資源數據和狀態都可以被視爲屬性
  • 使用策略和規則來構造的屬性和授權/標準拒絕訪問:XACML是基於策略的
  • 這是一個可以應用於多個圖層的標準,例如跨數據層,數據層,MVC應用程序的業務層,可以應用於多種技術和語言的標準。 C#(MVC4和更多),Java,Python ...

有了XACML,可以方便地實現關係例如爲:僱員可以批准交易,當且僅當交易金額<員工審批限制和交易沒有被鎖定

下一步該怎麼辦?

  • 查看NIST的頁面ABAC
  • 退房OASIS XACML的page和規格
  • 退房現有的實現(開源和供應商,如一個我工作,Axiomatics。)
相關問題