【问题标题】:Django different authentication for different URLsDjango对不同URL的不同身份验证
【发布时间】:2013-08-11 08:06:36
【问题描述】:

我有两个名为 frontend 和 affiliates 的 Django 应用程序,如下所示:

django/
    manage.py
    frontend/
        __init__.py
        models.py
        views.py
    affiliate/
        __init__.py
        models.py
        views.py

我希望人们能够拥有两个帐户,他们在domain.com/signup/ 注册他们的前端帐户,在domain.com/affilate/signup/ 注册他们的附属帐户。

我没有问题,但可以让他们同时登录两个帐户吗?如果他们访问并在domain.com 上进行页面访问,他们将通过其前端帐户进行身份验证,如果他们访问domain.com/affiliate/ 上的任何页面,他们将在其附属帐户上进行身份验证。

我的帐户模型如下所示:

class Account(models.Model):
    user = models.OneToOneField(User, db_index=True)
    username = models.CharField(max_length=32, db_index=True, unique=True)
    password = models.CharField(max_length=32)
    email = models.CharField(max_length=128, db_index=True, unique=True)

对于前端。

class Affiliate(models.Model):
    user = models.OneToOneField(User, db_index=True)
    username = models.CharField(max_length=32, db_index=True, unique=True)
    password = models.CharField(max_length=32)
    email = models.CharField(max_length=128, db_index=True, unique=True)

对于附属公司。

是否可以有两组不同的 django 用户,所以 user = models.OneToOneField(User, db_index=True) 字段与前端帐户的用户组相关,而不是附属帐户?因为我希望人们能够为两个帐户使用相同的用户名。如果他们都进入同一个 django 用户池,我会得到重复的用户名错误。谢谢!

【问题讨论】:

    标签: django


    【解决方案1】:

    除了User 模型和自定义配置文件模型之间的OneToOne,您可以使用ForeignKey 来代替User。然后在Account 视图中,您可以检查if hasattr(user, 'account'),在Affiliate 视图中,if hasattr(user, 'affiliate)。

    只需确保您不允许为每个用户对象使用多种类型的配置文件。您可以在视图或模型中执行此操作。我会说在这两个地方都这样做。

    【讨论】:

      【解决方案2】:

      根据您告诉我们的内容,我会说:为前端用户创建一个模型Account,并在需要时使用ForeignKey 将该模型与Affiliate 模型相关联。

      这样,每个人都使用相同的用户帐户登录,您可以通过访问Affiliate 模型来查找用户的附属信息。

      【讨论】:

        猜你喜欢
        • 2019-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多