我想知道与OAuth用户一起处理Django用户模型的最类似Django的方法是什么?具体来说,我主要是OAuth用户(使用** social-app-django登录) **(https://github.com/python-social-auth/social-app-django)),其中一些还有管理界面的密码。所有用户都应该能够在webapp中保存一些设置。每个用户属于一个或多个组。
Django用户需要设置密码,但对于OAuth用户,该字段需要另一个值。例如,此处显示:https://github.com/joestump/python-oauth2/wiki/Logging-into-Django-w--Twitter成功验证后,将创建一个用户并登录会话,如下所示:
user = authenticate(username=access_token['screen_name'],
password=access_token['oauth_token_secret'])
login(request, user)
来自代码段的方法使用Django用户模型,我可以将用户设置与用户模型联系起来。缺点是密码和电子邮件设置为任意值(我也没有收到来自OAuth提供商的电子邮件)。
方法B是将设置和角色保存在与用户表无关的表中(因此不需要电子邮件和密码),但也失去了用户模型的许多内置功能。</ p>
答案 0 :(得分:2)
您可以使用其他模型存储与OAuth用户关联的所有其他数据,并将其链接到settings.AUTH_USER_MODEL。 它可能需要自定义OAuth身份验证后端。您不必伪造密码和电子邮件(只需将其留空),但必须生成唯一的用户名。
检查其中一个第三方库的来源,例如django-all-access https://github.com/mlavin/django-all-access/blob/master/allaccess/models.py https://github.com/mlavin/django-all-access/blob/master/allaccess/backends.py