【问题标题】:Django user model. 1 admin account, 1 customer account with the same email and different passwordDjango 用户模型。 1 个管理员帐户,1 个客户帐户,使用相同的电子邮件和不同的密码
【发布时间】:2020-07-25 13:18:21
【问题描述】:

我正在尝试处理我有 2 个角色的用例。 (管理员,客户)

将有一个管理门户和一个客户门户(2 个不同的登录页面)。

  • 管理员可以邀请客户
  • 管理员也可以是客户,可以邀请自己进入客户门户
  • 管理员帐户不得与客户帐户共享相同的密码。
  • 电子邮件用作管理员和客户帐户的唯一字段。

例如:

管理员帐户 - 客户@email.com /password1 - 列表项

客户帐户 - customer@email.com /password2

解决方案 1: - 允许。拥有 1 个具有管理员权限和客户权限的帐户。 (这不适合业务用例)

根据这篇文章: https://simpleisbetterthancomplex.com/tutorial/2018/01/18/how-to-implement-multiple-user-types-with-django.html

解决方案 2: - 创建 2 个 django 项目。每个用户模型一个,因为两个帐户不能共享密码。分成2个项目的原因是因为session、login、logout等资源不会共享。所以每个门户(管理员,客户)都有自己的资源。

  • 创建客户 API 以允许管理员在客户 django 项目中创建客户帐户。

  • 用于共享相关数据的共享数据库

这是我能想到的处理用例的唯一方法。请让我知道是否有人有更好的想法来处理这个问题。

【问题讨论】:

    标签: django django-users


    【解决方案1】:

    如果您希望用户通过电子邮件登录,请先尝试将用户名字段设置为电子邮件,否则请记住用户名是用户登录的方式。接下来,创建一个配置文件应用程序。在这个应用程序中,创建一个与 Django 用户模型具有 OneToOne 关系的配置文件模型(您可以通过.user.profile 调用配置文件模型)。在此配置文件模型中,您可以创建一个区分客户和管理员的布尔字段。这样,当用户登录时,您可以检查那里的配置文件并呈现适当的模板。另一种方法是通过已经内置的 Groups 模型,创建 2 个组,一个用于管理员,另一个用于客户,您可以在客户注册时自动设置为客户,并且仅创建管理员如果您愿意,可以发送到 Django 管理员或单独的门户。

    【讨论】:

      猜你喜欢
      • 2011-03-31
      • 2022-11-25
      • 2021-10-29
      • 1970-01-01
      • 2020-02-15
      • 2011-08-24
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      相关资源
      最近更新 更多