1
如何模擬資源上可見數據的限制?不同的人正在訪問相同的資源,但具有不同的角色,因此他們不能看到所有的信息。信息
解決方案,無需訪問限制:如何模擬資源上可見數據的限制?
的情況下,我的工作
User:
name
phoneNumber
如果任何人都可以訪問它,這將是很容易爲模型:
GET /User -> [{name:"John", phoneNumber: "322-333"}]
GET /User/{id} -> {name:"John", phoneNumber: "322-333"}
然而,說我有兩個角色,管理員和用戶。電話號碼只能對同時也是管理員的用戶可見。授權令牌通過cookie,頭文件或類似方式傳輸。服務器將知道請求者具有哪些角色。如何設計一個API來處理這個問題?我有幾個想法:
1)幼稚的解決方案將只是過濾它,並保留字段未設置,如果你不允許訪問它,即。
If user: GET /User -> [{name:"John"}]
If admin: GET /User -> [{name:"John", phoneNumber: "322-333"}]
2)在URL中嵌入的作用:
If user is wanted as a User: GET /User/User -> [{name:"John"}]
If user is wanted as an Admin: GET /Admin/User -> [{name:"John", phoneNumber: "322-333"}]
3)定義一個新的資源的字段的每個可能子集:
If user is wanted as a User: GET /PublicUserInfo -> [{name:"John"}]
If user is wanted as an Admin: GET /FullUserInfo -> [{name:"John", phoneNumber: "322-333"}]
會採用不同的方法更好?
有沒有人有在實踐中解決的解決方案的經驗?