文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

OAuth2.0 social_djan

2023-01-30 23:20

关注

python网站第三方登录,social-auth-app-django模块,

social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块

目前流行的第三方登录都采用了OAuth2协议

 

安装:

 

pip install social-auth-app-django

 

 

settings.py配置:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    

    #第三方登录
    'social_django',
]

 

 

 

下一步我们就要执行迁移:

 

python manage.py migrate

 

social开头的就是我们生成的第三方表!

 

然后我们继续settings.py配置:

配置这里,当用户登录的时候,如果用户不存在,会自动在用户表创建用户,并且关联用户信息

 

 

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',

#第三方登录
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
},
},
]

 

#在配置文件中告知Django使用我们自定义的认证后端
AUTHENTICATION_BACKENDS = [
    'users.utils.UsernameModelBackend',
'social_core.backends.weibo.WeiboOAuth2', #微博 'django.contrib.auth.backends.ModelBackend', #指定django的modelbackend 类
]

 

第三方参数配置:

# 用户key
SOCIAL_AUTH_WEIBO_KEY = ''
# 用户secret SOCIAL_AUTH_WEIBO_SECRET = ''
# 登陆后用户跳转的地址 SOCIAL_AUTH_LOGIN_REDIRECT_URL = 'http://127.0.0.1:8080/index.html'

配置主路由:

urlpatterns = [
    url('^xadmin/', xadmin.site.urls),
  

    # 第三方登录
    url('', include('social_django.urls')),
]

下面我们还要配置回调URL:

在自己应用里的高级信息里,编辑授权回调页http://127.0.0.1:8000/complete/weibo/,黄色箭头指向的可以不填写

 

最后登录测试一下,看自己social_auth_usersocialauth表里是否有用户

登录成功跳到首页,发现还处于未登录状态,我们需要对源码做修改

我们要找到环境里的social_core目录下的actions.py

然后在100行左右  把下面这行代码

return backend.strategy.redirect(url)

修改为:

from rest_framework_jwt.serializers import jwt_encode_handler,jwt_payload_handler


response = backend.strategy.redirect(url) payload = jwt_payload_handler(user) response.set_cookie("name", user.username if user.username else user.username, max_age=24 * 3600) response.set_cookie("token", jwt_encode_handler(payload), max_age=24 * 3600) return response

修改好后登录之后就可以显示用户了!

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯