具有多个公司或组织的系统的REST API设计

时间:2016-04-24 23:23:38

标签: rest grails

我看到的大多数示例都实现了REST网址模式,例如http://www.app.com/books/1,可以访问ID为1或http://www.app.com/books的图书来访问所有图书。

这很好,但通常我会研究支持多家公司的应用程序。例如,公司ABC有2个用户,公司DEF有2个用户。公司 ABC 的用户会创建一个ID为的图书。现在,来自公司 DEF

的用户进行RESTful调用

http://www.app.com/books/100

需要存在Access异常,或

http://www.app.com/books

只列出属于DEF的所有书籍(不是ID为100的新书)。对于许多实体,例如Book,公司ID是表的一部分,但对于可能不是这种情况的其他实体。例如,如果书中的一个章节有REST操作,http://www.app.com/chapter/333章节表将具有对该书的外键引用,而不是公司。

管理对此资源的访问权限的最佳做法是什么?如果DEF的某个人试图从ABC访问一个章节,我将不得不构建一个查询,将该章加入书中以验证公司ID是否有效。

我正在使用Grails 3.x,其中大部分逻辑都是抽象的,并且认为“自动地”发生。因此,将自动返回为特定书籍ID输入的URL,并且列出all的请求将返回数据库中的每本书。似乎要继续,我必须覆盖大部分这种自动功能并实现我自己的安全性,可能在服务层,其中公司ID将是每个操作的必需参数。这听起来合理吗?

这种事情是否有既定的最佳实践?

1 个答案:

答案 0 :(得分:0)

不知道它是否符合您的需求但知道有一个由Burt Beckwith编写的ACL插件很有意思:

Spring Security ACL Plugin