Skip to main content
 首页 » 编程设计

python之如何完成django-userena和社交认证的整合

2024年08月30日30lvdongjie

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

我想以某种方式将 userena 与社交身份验证集成。但是无论我做什么,我都无法整合它们。

那么如何整合这两个认证系统。

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

亲切的问候

请您参考如下方法:

我不太明白你的意思。但是,请考虑到这一点:

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 社交身份验证知道如何进行身份验证、处理 session 并聚合额外数据(例如 token )。

如果您只想使用userena 向用户添加额外数据,这可以在simpler form 中完成。 .

如果出现以下情况,我可以说使用 userena:

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

更新:如果你想同时拥有这两个身份验证,请看一下这个 nice project .