OAuth2.0 social_djan

发布时间:2019-05-02 07:04:02编辑:auto阅读(2063)

    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

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

     

关键字

上一篇: python 邮件发送

下一篇: day 24-1 继承