Django密码和非标准用户的身份验证

时间:2013-11-19 16:47:33

标签: python django django-models

我被要求介绍一个不寻常的案例,我想知道别人会怎么做。

我的Django应用程序中有用户。该模型是标准用户模型,身份验证。这些站点用户中的每一个都可以将自己的联系人添加到系统中。但是我的新要求是允许他们的联系人设置密码(如果他们想要),以便他们可以登录到他们的状态页面(属于该用户)。

所以我的问题是你会怎么做?我已经有了联系人表(属于一个用户),我正在考虑添加一个密码(可选)字段,但后来我不确定如何处理这个身份验证,因为他们不是我的用户,而是成员我的用户(如果有意义的话)。

1 个答案:

答案 0 :(得分:1)

一种方法是为继承自AbstractBaseUser的联系人创建另一个用户模型。然后creating custom auth backend将在两个模型中查看登录用户。最后,您必须在每个操作之前区分标准用户和联系人用户。 也就是说,如果联系人用户和标准用户在您的应用程序中存在显着差异。

或者您可以在应用中创建custom user,其中包含is_contact属性。这将用于两种类型的用户。您可以在设置中将其设置为AUTH_USER_MODEL,并在is_contact属性的每个操作之前检查以确定结果。如果他试图访问他不想要的内容,你可以为联系人用户返回403。

或者,如果您在应用程序中使用权限,则可以将联系人用户的权限设置为仅查看将其添加为联系人的用户的状态,而不是其他任何内容。