RETS Api:多用户访问级别的端点设计

时间:2014-09-08 11:59:57

标签: api rest

假设我有以下终点:

/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(针对用户)

对于这种情况,有没有最好的做法或好的建议?

希望这个问题有道理。

2 个答案:

答案 0 :(得分:0)

如果我要实现这一点,我只会创建一个端点来访问车辆(/vehicles/),并且可以通过全局和帐户管理员用户发送可选的GET参数来指示更多内容他们要。他们可以发送AllGlobalAllAccount来表明它。当然,我还会在返回数据之前检查他们对代码中请求的许可。

tastypie中实现这一点非常容易。

答案 1 :(得分:0)

您无需对此做任何事情。只需列出允许实际用户在同一端点上使用她的安全级别查看的内容,即所有内容......

更详细一点:

  • 您可以添加/vehicles/,其中列出了允许实际用户查看的车辆。
  • 您可以添加/account/{id}/vehicles/,其中可列出与特定用户相关的车辆。

注意:收到REST的stateless constraint,在您的情况下,您必须向每个请求发送足够的信息来验证用户,并且您不能拥有服务器端会话存储...