如何在使用多授权提供程序时获取信号发送方类型?

时间:2012-11-26 21:08:57

标签: django django-authentication django-signals django-socialauth

在我的应用中,我使用标准的auth模块和social auth插件。 我想检测用户是否通过oauth或标准方法注册

我已将功能注册到post_save信号:

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        key, expires = UserProfile.generate_activation_data()
        return UserProfile.objects.create(user=instance, activation_key=key, key_expires=expires)

post_save.connect(create_user_profile, sender=User)

但是当用户通过oauth注册时我会避免创建激活数据,而是设置一些字段表示用户是由oauth注册的。

有人可以给我任何建议吗?

1 个答案:

答案 0 :(得分:1)

添加一个pipeline method,在用户实例中设置一个标志,如下所示:

def created_by_social_auth(user, *args, **kwargs):
    user.by_social_auth = True

此外,您可以检查用户是否有任何UserSocialAuth实例与之关联:

user.social_auth.count()