假设我有以下终点:
/accounts
(公司/业务部门)
/vehicles
(汽车,卡车等)
/users
(登录用户)
用户可以拥有3种不同的权限:全局管理员,帐户管理员和用户。
如果用户访问车辆:
但是,如果帐户管理员访问/车辆,他可能只需要自己的车辆,并且如果全球管理员只想要他自己的相关帐户上的车辆。那么呢?
一个示例解决方案:
/accounts/{accountId}/vehicles
(针对全球管理员)
/accounts/current/vehicles
(适用于帐户管理员)
/vehicles
(对于用户)
或...
/accounts/{accountId}/vehicle
s(针对全球管理员)
/vehicles/byUserAccount/{accountId}
(适用于帐户管理员)
/vehicles
(对于用户)
或...
/vehicles/byEntireAccount/{accountId}
(针对全球管理员)
/vehicles/byUserAccount/{accountId}
(适用于帐户管理员)
/vehicles
(针对用户)
对于这种情况,有没有最好的做法或好的建议?
希望这个问题有道理。
答案 0 :(得分:0)
如果我要实现这一点,我只会创建一个端点来访问车辆(/vehicles/
),并且可以通过全局和帐户管理员用户发送可选的GET
参数来指示更多内容他们要。他们可以发送AllGlobal
或AllAccount
来表明它。当然,我还会在返回数据之前检查他们对代码中请求的许可。
在tastypie中实现这一点非常容易。
答案 1 :(得分:0)
您无需对此做任何事情。只需列出允许实际用户在同一端点上使用她的安全级别查看的内容,即所有内容......
更详细一点:
/vehicles/
,其中列出了允许实际用户查看的车辆。/account/{id}/vehicles/
,其中可列出与特定用户相关的车辆。注意:收到REST的stateless constraint,在您的情况下,您必须向每个请求发送足够的信息来验证用户,并且您不能拥有服务器端会话存储...