【问题标题】:Where/How to store and check specific user limitations? [closed]在哪里/如何存储和检查特定的用户限制? [关闭]
【发布时间】:2020-11-08 03:24:29
【问题描述】:
我有一个标准的用户、组、权限架构,用于向我的用户授予/撤销 CRUD 权限。我有一个 API,它根据用户的查询从模型数据中过滤数据。
我希望能够限制用户发送查询时返回的对象数量。我的问题是我不确定在哪里/如何最好地存储这些信息。
我的基本解决方案是在我的组中添加一个max_rows 列并引用每个请求它简单易管理,但由于用户可以有多个组,我必须确保max_rows 在与用户所属的其他组同步。
有什么改进的想法吗?
【问题讨论】:
标签:
sql
django
database-design
django-rest-framework
【解决方案1】:
您不必确保您的最大行数在用户所属的组中同步。
这样想:超级管理员应该能够获得他/她要求的尽可能多的行,这是无限的。例如,受信任的用户可能有一些适当的限制,例如最多 10 000 行。现在,如果某人同时担任这两个角色,很明显该人应该能够加载他/她想要的任意多的记录,因为他/她是超级管理员,并且该人也受信任这一事实不应削弱他/她超级管理员权限,因此合乎逻辑的方法是:
select max(max_rows)
from yourgrouptable
join yourgroupmappingtable
on yourgrouptable.id = yourgroupmappingtable.group_id
where yourgroupmappingtable.user_id = 5;