多个AUTH_USER_MODEL在django中

时间:2017-01-25 11:04:10

标签: django authentication

在我的Django项目(这是一个REST API)中,我遇到了一个可能遇到的问题,但我无法在任何地方找到一个好的解决方案。在我的项目中,我有两种不同的用户,“移动应用用户”和“商业用户”。移动应用用户可以访问我们的移动应用,并根据地理位置查看周围的内容。业务用户可以登录Web管理门户并生成移动应用程序用户看到的内容。作为警告,业务用户也可能是app用户。 我希望能够允许业务用户和应用用户拥有相同的电子邮件,同时让他们的模型独一无二。

现在问题是如何创建一个具有相同电子邮件ID的两个帐户(第一个是移动应用程序,第二个是商家)。

3 个答案:

答案 0 :(得分:2)

一般可能的解决方案:

有几种可能的解决方案来处理不同类型的用户。根据你的情况你应该。本文以多种方式涵盖了该主题: How to Implement Multiple User Types with Django

文章中讨论的方法总结:

  1. 始终只使用一种 Django 模型来处理身份验证,即使您有不同类型的用户。正如@Anton Perepelitcyn 和@Anderw 指出的那样,我们仍然可以使用关系将多个用户模型用于其他目的。
  2. 根据您的情况选择最适合您的解决方案:enter image description here

答案 1 :(得分:0)

假设您的基本AUTH_USER_MODEL模型用于存储“移动应用用户”。 您应该添加另一个模型来存储“业务用户”的一些其他信息,它必须与AUTH_USER_MODEL模型相关,这就是全部。

答案 2 :(得分:0)

假设您有自定义User。然后

class MobileUser:
    credentials = models.OneToOne(User, related_name='mobile_user')
    ...

class BusinessUser:
    credentials = models.OneToOne(User, related_name='business_user')
    ...

您可以向自定义User添加一些必要的字段,这可以让您更好地控制访问(例如布尔is_businessis_mobile)。另请使用rolespermissions