Django对不同URL的不同身份验证

时间:2013-08-10 23:20:23

标签: django

我有两个名为frontendaffiliates的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用户池,我将收到重复的用户名错误。谢谢!

2 个答案:

答案 0 :(得分:1)

而不是OneToOne模型与自定义配置文件模型之间的User,而是ForeignKey代替User。然后在Account次观看中,您可以获得if hasattr(user, 'account')支票,Affiliate次查看if hasattr(user, 'affiliate)。

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

答案 1 :(得分:0)

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

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