1

在我的应用程序中,我使用标准身份验证模块和社交身份验证插件。我想检测用户是通过 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 注册的。

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

4

1 回答 1

1

添加一个在用户实例中设置标志的管道方法,如下所示:

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

您还可以检查用户是否有任何UserSocialAuth与以下内容相关的实例:

user.social_auth.count()
于 2012-11-27T14:41:24.203 回答