通过restful API确保通过指定的id访问数据库中的资源

时间:2014-02-08 09:39:35

标签: algorithm api rest design-patterns

我对设计模式有疑问。假设我在db中有restful api和两个表:

company
---------------
id
Name
Address

User
----------------
Id
Login
Password
CompanyId <-FK to company

假设公司1的用户已登录,并希望按ID获取用户数据,但指定的ID的公司ID与登录用户不同。

例如:

1)myapi.com/api/getuser/1 -> user id 1 has the same company as logged in user

2)myapi.com/api/getuser/2 -> user id 2 has different company as logged in user (should be unaccessible for logged in user)

当然上面的例子很简单,我询问更复杂(一般)的情况,其中许多表是级联关系。

您对上述问题有经验吗?

1 个答案:

答案 0 :(得分:0)

这称为租赁。委托人A仅允许查看公司A中其他用户的数据。委托人A不应该能够看到公司B的用户数据,而委托人B不能查看公司A中用户的数据。当您有安全规则时这需要强制执行,您正在处理多租户系统。

当您调用“级联关系中的多个表”时,其他每组数据都应该可以追溯到租期。您需要弄清楚租赁是什么,以及委托方授权的公司/公司。如果它们不匹配,您的API应返回403 Forbidden响应。