我正在設計一個Web API並且它處於最基本的階段。API設計:我如何處理以下情況,從而涉及用戶權限/角色管理
我係統中的每個用戶都可以擁有一個或多個角色。 (示例用戶和管理員)。
本身被設計爲例如模塊和方法的API我有一個模塊的用戶在其下有以下方法
USER
- get_friends_of
- get_profile_pic_url
現在,在我的用戶角色管理代碼中,每種方法都是「正確的」。這些權限分配給例如一個或多個角色中,兩個角色看起來像
USER_ROLE = [「get_profile_pic_url」] ADMINISTRATOR_ROLE = [「get_profile_pic_url」,「get_friends_of」]
所以每當用戶試圖調用我看到的方法是否任何他的角色都提到這種方法作爲一種權利。如果是,那麼它被調用,否則它不是。
除了在下列情況下,它的工作方式與黃油相同。
用戶X通常無權調用'get_friends_of',但我想讓他在每次嘗試取回自己的朋友時調用該方法。
例如get_friends_of(X)是允許的,但get_friends_of(y)將被拒絕。
我的問題是如何將這些案例納入我的設計?
一個直接的解決方案可能是我引入了「get_my_friends」方法,但它增加了我的API的大小,我不得不寫更多的文檔,並去看看它實際上只是一個「get_friends_of」的特例。從某種意義上講,它也不具有可擴展性,我可能希望允許用戶看到朋友的朋友。
我的API中的設計目標之一就是每個方法都是相互排斥的。