如何实现django-userena和社交认证的整合

时间:2012-09-17 21:30:25

标签: python django django-socialauth

我认为django userena是代表一次又一次重新发明轮子的用户注册信息的不错选择。

我想以某种方式将userena与social-auth集成。但无论我做了什么,我都无法完成它们的整合。

那么如何整合这两种身份验证系统。

任何想法或帮助将不胜感激......

亲切的问候

1 个答案:

答案 0 :(得分:3)

我无法理解你的想法。但是,请考虑到这一点:

1 Userena提供与用户连接的抽象模型。使用来自源代码的示例:

from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User

from userena.models import UserenaLanguageBaseProfile

import datetime

class Profile(UserenaLanguageBaseProfile):
    """ Default profile """
    GENDER_CHOICES = (
        (1, _('Male')),
        (2, _('Female')),)

    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='profile') 

    gender = models.PositiveSmallIntegerField(_('gender'),
                                              choices=GENDER_CHOICES,
                                              blank=True,
                                              null=True)
    website = models.URLField(_('website'), blank=True, verify_exists=True)
    location =  models.CharField(_('location'), max_length=255, blank=True)
    birth_date = models.DateField(_('birth date'), blank=True, null=True)
    about_me = models.TextField(_('about me'), blank=True)

正如您所看到的,userena提供了一个将用户作为一对一字段的抽象类。

另一方面,django-social-auth知道如何使用不同的社交服务进行身份验证,并填充数据库中的表auth_user。由django-social-auth更改的其他表是django-session和social_auth_usersocialauth。这意味着django social auth知道如何进行身份验证,处理会话并聚合额外数据(如令牌)。

如果你想到的只是使用userena向用户添加额外的数据,可以在simpler form中完成。

我可以说使用userena if:

  • 你需要面部照片(图像)
  • 您需要为每个用户添加语言
  • 您需要使用https
  • 您需要通过电子邮件确认帐户(这种情况与使用社交身份验证相冲突,不是吗?)
  • 需要对个人资料进行一些基本的用户权限管理。

更新:如果您想同时使用两个身份验证,请查看此nice project