Django将Python社交身份验证和默认身份验证与自定义用户模型集成:

时间:2015-05-23 00:53:38

标签: django facebook-authentication python-social-auth

我正在制作一个项目,需要一些用户通过Facebook和其他人进行身份验证,以便使用自定义模型进行注册。 Facebook用户将没有与自定义模型相同的注册凭据。例如,将有餐馆老板注册和客户注册。客户不必放置街道地址,他们只需登录即可。

我的意图是让餐馆老板通过自定义个人资料模型和facebook用户注册,只需通过defualt社交身份验证登录,但每当我将两者合并时,社交身份验证开始使用自定义模型,因为我定义了设置中的自定义用户模型。有没有办法区分python社交认证后端只使用默认或一种方式来更新我当前的自定义用户模型以拥有一个Facebook细分。我已经在网上搜索了很长时间,但似乎找不到任何可以将两者结合起来的东西(1),但它没有成功。然而,我可以成功地使用其中一个,具体取决于我是否在settings.py文件中指定了用户模型。

这很简单,但我不知道如何通过社交身份验证查看其默认和djangos身份验证来查看我的自定义模型。

(1) - http://code.techandstartup.com/django/profiles/

1 个答案:

答案 0 :(得分:2)

为了区分一种类型的用户,你可以这样做:

首先,在您的设置文件中,存储以下内容:

FIELDS_STORED_IN_SESSION = ['type']

这将存储在管道

的每个功能的strategy参数中

然后,在必要时更改管道。例如,在create_user管道功能中,您可以执行以下操作:

user_type = strategy.session_get('type')

if user_type != 'customuser':
    return {
        'is_new': True,
        'user': strategy.create_user(**fields)
    }
else:
    return {
        'is_new': True,
        'user': create_restaurant(**fields)
    }