用戶被分配到一個或多個部門。更好的方法來檢查用戶訪問Web API,服務層,DB
用戶擁有一個或多個角色,例如讀取自己的角色只能查看他/她的任務。 團隊成員角色可以查看和編輯他人分配給他/她的部門中的任務。 具有角色的用戶Admin可以查看和編輯系統中的所有任務。
由於未經授權的訪問阻止和性能原因,我們希望將當前登錄的用戶ID一直傳遞到數據庫,以便只能獲取他/她有權訪問的記錄。
我們的系統設計是:
的Web API - >業務/服務層 - >庫 - > DB
目前,我們正在通過用戶ID從網頁API服務層中的每個方法的地方例如檢查用戶是否具有角色團隊成員(誰可以查看/編輯其他用戶可以訪問的部門中的任務) 並獲取他有權訪問的所有部門,然後進一步傳遞到存儲庫。
有沒有更好的方法來避免在每個方法中傳遞用戶ID? 上述設計中用於檢查用戶訪問權的最佳位置是什麼?
我們希望沒有用戶標識參數的方法能夠在另一個應用程序中使用相同的類進行報告。
任何想法?
你可以傳上來的帳戶及其他相關信息的cookie,那麼有一個處理檢查帳戶及其他信息基本服務。也可以使用Attributes作爲一種乾淨的方式來檢查一個呼叫是否被授權。作爲上面相關服務方法的[ReadOwnRoleRequired]示例。目前無法提供代碼示例,因此現在應留下評論。 – NPhillips
您剛剛提到「團隊成員角色可以查看和編輯他/她所屬部門內的其他任務」。那麼我猜你必須通過用戶ID才能獲得相關記錄!不是嗎? –
@NPhillips:謝謝。但用戶TeamMember可以訪問其部門中其他用戶的任務。我們不僅需要檢查角色,還需要檢查當前用戶有權訪問哪個部門,並將其傳遞給db以僅查詢這些部門。 – Iffi