首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在应用程序中同时实现内置django身份验证和第三方社交身份验证?

如何在应用程序中同时实现内置django身份验证和第三方社交身份验证?
EN

Stack Overflow用户
提问于 2016-10-29 03:44:25
回答 1查看 671关注 0票数 3

我从过去的4-5个月开始使用django,最近开始学习django- REST -framework,我对正确的身份验证系统感到困惑,实际上我正在尝试建立一个主要使用REST API的应用程序,因为我的客户端可以是浏览器和安卓,所以我需要一个身份验证系统,其中用户可以使用django内置身份验证(django.contrib.auth.model.User)以及第三方社交身份验证(谷歌,Facebook等)。

现在,我对如何创建我的数据库感到困惑,因为当我创建一个表/模型时,假设创建一个'Book',那么这个模型需要一个指向用户模型的外键,这里的用户既可以是'django.contrib.auth.model.User‘,也可以是使用第三方身份验证注册的用户。

那么我将如何在我的模型的外键字段中引用用户呢?

我还决定定制django的buit-in身份验证,因为我希望用户使用他们的电子邮件而不是用户名登录。

代码语言:javascript
复制
class Book(models.Model):
  title = models.CharField(...)
  author = models.ForeignKey(?) ? Here, how do i refer to both
                                 'django.contrib...User' and users signed-up                     
                                 using thrid-party auth.
EN

回答 1

Stack Overflow用户

发布于 2016-10-29 06:56:43

让我详细解释一下你的问题。首先:你很幸运。有一个(几乎)开箱即用的版本可以解决你的问题。

对于社交和正常的身份验证和注册,包括电子邮件验证等,您可以依赖django-allauth:

https://github.com/pennersr/django-allauth

django-restauth提供了一个构建在all-auth之上的restful平台,因此您甚至不必从头开始构建auth rest api:

https://github.com/Tivix/django-rest-auth

当涉及到db模式时,有几个选项。您可以继续构建自己的身份验证系统,在我看来,这有点过头了。更重要的是,我将实现一个配置文件模型,它与django.contrib.auth.models.User中的用户模型具有OneToOne关系,如Django文档的this chapter中所述。

您的模型(当然在单独的应用程序中)将如下所示:

代码语言:javascript
复制
from django.contrib.auth.models import User
from django.db import models
#other imports

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='profile')
    books_read = models.IntegerField(default=0)
    books_recommended = models.IntegerField(default=0)

class Book(models.Model):
    title = models.CharField(...)
    author = models.ForeignKey('UserProfile', related_name='books')

您将遇到的另一个问题是如何在序列化程序中更新和/或显示这些嵌套关系。

django-restauth文档中的This FAQ article和官方django-rest_framework文档中的this chapter将帮助您快速入门。

最佳,D

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40312217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档