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"}]
会采用不同的方法更好?
有没有人有在实践中解决的解决方案的经验?