Django:如何仅获取与登录用户所属区域匹配的记录?

时间:2019-04-10 15:58:15

标签: python django authentication authorization

数据:

  1. 带有区域字段的事务表(Oracle数据库只读访问权限)。
  2. excel中具有地区字段的用户表。 (我可以在辅助数据库中添加此表)

LDAP身份验证

使用视图(使用原始SQL查询),我正在显示事务表的汇总数据。

所有用户都看到相同的数据,因为该区域没有过滤器。

现在,我只想汇总那些登录用户所在区域的记录。

如何实施?

我的方法:

  • 创建区域模型
  • 用事务表实现外键(可以吗?)

这种情况下最好的方法是什么?

请分步清楚地说明。

注意:我已经解决了我的问题。请看我的答案。我的方法有什么缺点吗? (赞赏新的最佳方法)

2 个答案:

答案 0 :(得分:0)

您正在尝试对数据库中的数据实现细粒度的基于关系的访问控制。您不应在代码中实现此功能,而应将其委托给授权层。

关系数据库供应商有不同的处理方式,例如FGAC。整个字段称为动态数据屏蔽。我为一家提供基于策略的代理的公司工作,该代理将有效过滤并屏蔽您的数据,以便您仅看到属于用户所属区域的数据。称为Axiomatics Data Access Filter

答案 1 :(得分:0)

我通过以下步骤解决了这个问题。

步骤:

  1. 在我的views.py中使用熊猫创建了excel中存在的用户表数据框。
  2. 将登录用户ID捕获到变量中。
  3. 在DataFrame中过滤此用户ID并获取他/她所在的区域,然后我将此变量传递给最终的聚合查询并在此处进行过滤。

简短。