Where/How 存储和检查特定用户限制?

Where/How to store and check specific user limitations?

我有一个标准的用户、组、权限模式,用于 grant/revoke 我的用户的 CRUD 权限。我有一个 API,它根据用户的查询提供来自模型数据的过滤数据。

我希望能够限制用户发送查询时返回的对象数量。我的问题是我不确定 where/how 最好地存储此信息。

我的基本解决方案是在我的组中添加一个 max_rows 列并引用每个请求 这很简单且易于管理,但由于用户可以有多个组,我必须确保 max_rows 与用户所属的其他组同步。

有什么改进的想法吗?

您不必确保您的最大行数在用户所属的组中保持同步。

这样想:超级管理员应该能够获取 he/she 要求的行数,即无穷大。受信任的用户可能有一些适当的限制,例如最多 10 000 行。现在,如果有人同时拥有这两个角色,那么很明显,这个人应该能够加载 he/she 想要的记录,因为 he/she 是超级管理员,而且这个人也受信任的事实不应该减少 his/her 超级管理员权限,因此合乎逻辑的方法是:

select max(max_rows)
from yourgrouptable
join yourgroupmappingtable
on yourgrouptable.id = yourgroupmappingtable.group_id
where yourgroupmappingtable.user_id = 5;