在Django中控制对模型查询集的访问的可靠方法

时间:2018-07-24 14:15:11

标签: django django-models django-custom-manager

我正在寻找一种安全的方法来保护组织免受访问,因为在我整个项目中,其他组织的客户都会看到该组织的客户。一个组织的用户永远都不会看到其他组织的用户,我想知道是否可以采用结构性的方式来设置项目,以防止我犯编码错误并将错误数据泄露给错误用户。

当前,我只是按组织过滤所有“客户”查询,但是我担心在某个时候我可能会在某个地方出现漏洞。

我当时想我可以为Client创建一个自定义模型管理器,以便Client.objects.all()或Client.custommanager.all()需要一个组织

好奇是否还有其他/更好的方法?

我具有以下简化的模型结构:

class Organisation(models.Model):
    name = models.CharField(null=True, verbose_name = 'Name', max_length=100)

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    organisation = models.ForeignKey('Organisation', null=True, on_delete=models.CASCADE)


class Client(models.Model):
    advisor = models.ForeignKey(User, on_delete=models.CASCADE)

0 个答案:

没有答案