我有一个关于设计模式的问题。假设我在 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 -> 用户 id 1 与登录用户的公司相同
2) myapi.com/api/getuser/2 -> 用户 id 2 与登录用户有不同的公司(登录用户应该无法访问)
当然上面的例子很简单,我问的是更复杂(一般)的情况,其中许多表都是级联关系。
你有遇到过以上问题吗?
最佳答案
这称为租赁。委托(delegate)人 A 只允许查看公司 A 中其他用户的数据。委托(delegate)人 A 不应查看公司 B 的用户数据,委托(delegate)人 B 不应查看公司 A 中用户的数据。当您有安全规则时这需要强制执行,你正在处理一个 Multi-Tenancy 系统。
当您拥有所谓的“级联关系中的多个表”时,其他每组数据都应可追溯到租赁。您将需要弄清楚该租约是什么,以及委托(delegate)人获得授权的公司/公司。如果它们不匹配,您的 API 应该返回 403 Forbidden 响应。
关于algorithm - 通过 restful API 通过指定的 id 保护对数据库中资源的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21644391/