Django REST Framework实现Social Auth+JWT多方式登录优选第三方包问询
适配Django REST Framework的多渠道登录第三方包组合方案
推荐选择dj-rest-auth + django-allauth的组合,刚好匹配你的开发需求,同时可以复用你之前使用django-allauth的经验。
组合能力对应说明
- 用户名密码登录能力:
dj-rest-auth原生为DRF设计,自带封装好的用户名密码注册、登录、密码重置、邮箱验证等标准REST接口,不需要手动编写基础认证逻辑,支持返回DRF内置Token、JWT、Session等多种格式的认证凭证,适配移动端调用场景 - Google、Facebook等第三方登录能力:沿用你熟悉的
django-allauth的社交登录生态,它已经完成了绝大多数主流第三方平台的OAuth适配,只需要在后台配置对应平台的客户端ID、密钥等参数即可;dj-rest-auth自带对接django-allauth的扩展模块,可以直接将django-allauth的社交登录能力转换为REST接口,完美解决django-allauth原生不支持REST场景的问题
调用逻辑说明
- 用户名密码登录:前端直接调用
/dj-rest-auth/login/接口,传入用户名、密码参数即可拿到有效认证凭证 - 第三方登录:前端先向Google/Facebook发起授权请求拿到授权码,之后调用
/dj-rest-auth/social/<provider>/接口传入授权码,后端会自动完成用户信息校验、新用户自动注册、老账号自动匹配绑定、返回认证凭证的全流程,不需要额外开发核心逻辑
备选方案
如果你的项目不需要邮箱验证、账号关联管理等django-allauth自带的附加能力,也可以选择djangorestframework-simplejwt + python-social-auth的组合,前者负责JWT凭证的生成校验,后者负责第三方OAuth授权的逻辑处理,不过该组合需要自行封装部分接口,开发量比上述最优组合更高。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

