1

我正在创建一个不使用任何标准 Django Admin 的多租户应用程序(内部使用除外,它可以访问所有租户......这很简单)。我正在尝试创建自己的授权系统,但我对使用标准用户模型(或任何内置应用程序的模型)不感兴趣。我的应用程序将有帐户,每个帐户都会有管理员(必须使用管理员与用户进行名称冲突)。这些用户将使用我自己的完全自定义系统进行身份验证。难道这一切都错了。我应该/我仍然可以在使用我自己的自定义界面的多租户情况下使用 Django 的身份验证系统(如前所述,我不会允许帐户持有人使用默认的管理界面)。

在我看来,很多 Django 都是围绕使用 Admin 界面的想法构建的,而不是使用您自己的 Admin 构建多租户 SAAS 软件。我想这一切都错了吗?

4

1 回答 1

3

您绝对应该使用 Django 身份验证系统,它仍然可以完成您需要的 90% 的工作。

我在一个项目中构建了与您的场景完全相同的内容:公司帐户,每个帐户都有管理员用户和多个普通用户。

这是我使用的模型结构:

class Account(models.Model): # represents copporate customer
    admin = models.ForeignKey(User)
    # other fields ...

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    account = models.ForeignKey(Account)

还有一些使用自定义装饰器在视图级别强制执行授权要求的示例:

@account_access_required # request.user.get_profile().account == account
def account_page(request, account_id):
    # ...

@account_admin_required # request.user == account.admin
def account_users(request, account_id):
    # ...

我们实际上为帐户使用了子域,因此不需要显式account_id参数。

为帐户管理员使用自定义界面是非常合理的。Django 管理界面仅适用于 100% 受信任的用户,例如系统管理员和内部支持人员。

于 2010-02-18T20:12:33.630 回答