如何在Django中实现两个身份验证层



我有一个用于企业的Web应用程序。登录后,用户(业务经理(可以查看有关其业务信息的表。

用户ID 1->*在Mastertable中行,

用户ID 1->*预测中的行

我需要更改它,以便多家公司的所有者可以登录特定业务的帐户,并编辑经理可以的信息。

我正在考虑将数据库架构更改为这样的东西:UserId - businessId 1-*行中的行,排在预测中的行

我应该有2个登录页面,首先是用户ID,然后是BusinessID。然后,数据库中的所有列仅引用BusinessID,因此不同的用户可以编辑相同的数据。

或相同的登录表单使用户输入BusinessID及其用户名,然后取决于他们输入哪个BusinessID,它将登录到该页面?

我不确定实施这样的事情的最佳实践是什么。

这是我的Django模型的样子:

from django.db import models
from django.contrib.auth.models import User
class MasterEntry(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField()
    cutoff1 = models.IntegerField(default=0)
    cutoff2 = models.IntegerField(default=0)
    rooms_sold = models.IntegerField(default=0)
    is_blackout = models.BooleanField(default=False)
class ForecastEntry(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField()
    rate = models.IntegerField(default=0)

用户有数百个"主条目"one_answers"预测条目"行。我查询行的数据库,并在前端创建一个表。

您不需要两层身份验证。

例如,不是管理员的用户只能查看他拥有的业务,这是在显示上述业务列表中的简单过滤器中实现的。

您可以将每个业务名称渲染为一个链接,然后在其中显示MasterEntry s的列表。

这是信息布局的问题。

结论:

  1. 仅显示一个属于身份验证用户的业务的页面。
  2. 超级用户可以看到所有业务。
  3. 您可以单击业务条目,以查看/删除它包含的任何MasterEntryS。

最新更新