前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OAuth2.0 social_djan

OAuth2.0 social_djan

作者头像
py3study
发布2020-01-19 17:24:00
4880
发布2020-01-19 17:24:00
举报
文章被收录于专栏:python3python3

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

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

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

安装:

代码语言:javascript
复制
pip install social-auth-app-django

settings.py配置:

代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    

    #第三方登录
    'social_django',
]

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

代码语言:javascript
复制
python manage.py migrate

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

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

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

代码语言:javascript
复制
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',
            ],
        },
    },
]
代码语言:javascript
复制
#在配置文件中告知Django使用我们自定义的认证后端
AUTHENTICATION_BACKENDS = [
    'users.utils.UsernameModelBackend',

    'social_core.backends.weibo.WeiboOAuth2',  #微博
    'django.contrib.auth.backends.ModelBackend',  #指定django的modelbackend 类
代码语言:javascript
复制
]

第三方参数配置:

代码语言:javascript
复制
# 用户key
SOCIAL_AUTH_WEIBO_KEY = ''
# 用户secret
SOCIAL_AUTH_WEIBO_SECRET = ''
# 登陆后用户跳转的地址
SOCIAL_AUTH_LOGIN_REDIRECT_URL = 'http://127.0.0.1:8080/index.html'

配置主路由:

代码语言:javascript
复制
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)

修改为:

代码语言:javascript
复制
from rest_framework_jwt.serializers import jwt_encode_handler,jwt_payload_handler
代码语言:javascript
复制
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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档