【问题标题】:Django-guardian on DB with shared (non-exclusive) access具有共享(非独占)访问权限的数据库上的 Django-guardian
【发布时间】:2011-10-10 03:52:19
【问题描述】:

我正在开发一个 Django 应用程序,它是某个 Oracle 数据库的 Web 前端,而另一个本地数据库则保存着应用程序的数据,例如 Guardian 权限。问题是它可以从我无法控制的不同地方进行修改。

假设我们有 3 个模型:UserThesisUserThesis

UserThesis - 指定ThesisUser 之间关系的表(UserThesis 的共同作者)

场景:

  1. User 作为Thesis 的作者被其他应用删除UserThesis 表中的条目。

  2. User 尝试使用我们的 Django 应用修改 Thesis。他成功了,因为 Guardian 和 Django 不知道 UserThesis 的变化。

我想到了一些解决方案:

  1. 让一些 cron 作业通过检查条目的修改日期来查找 UserThesis 中的更改。易于检查添加,删除需要再次查看所有关系。

  2. 修改 Oracle DB 模式以添加 Guardian DB 表并在 UserThesis 表上创建触发器。我不想这样做,因为 Oracle DB 在许多不同的应用程序之间共享。

  3. 手动检查视图和模板中的关系(Oracle 负载较重)。

哪个是最好的?还有其他想法吗?

【问题讨论】:

    标签: python django database-permissions django-permissions


    【解决方案1】:

    我决定手动检查权限,尽可能缓存它。我最终得到了 get_perms_from_cache(self, user) 模型方法,这对我有很大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多