如何在django中实现两个认证层

How to implement two authentication layers in django

我有一个企业网络应用程序。登录后,用户(企业经理)可以查看 tables 有关其企业的信息。

MasterTable 中的用户 ID 1->* 行,

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

我需要更改它,以便多个企业的所有者可以登录特定企业的帐户并编辑经理可以编辑的相同信息。

我正在考虑将数据库架构更改为如下内容: userID - businessID 1-* MasterTable 中的行,ForecastTable 中的行

我是否应该有 2 个登录页面,首先是用户 ID,然后是企业 ID。那么数据库中的所有列都只引用了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)

一个用户有数百个 'master entry' 和 'forecast entry' 行。我在数据库中查询行并在前端创建一个 table。

您不需要两层身份验证。

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

您可以将每个公司名称呈现为 link,然后在其中显示 MasterEntry 的列表。

这更多是信息排版的问题

结论:

  1. 仅显示包含已验证用户的业务的页面。
  2. 超级用户可以查看所有业务。
  3. 您可以单击一个业务条目以 view/edit/delete 它包含的 MasterEntry 中的任何一个。