zoukankan      html  css  js  c++  java
  • 微博绑定用户接口(下)

    1.微博绑定用户接口

    1.1 oauth/urls.py 中添加路由

    urlpatterns = [ 
      path('weibo/binduser/', views.OauthWeiboBindUser.as_view()), # /oauth/weibo/callback/ 
    ]
    

    1.2 oauth/views.py 中添加试图函数

    from apps.user.models import User
    from rest_framework.permissions import AllowAny
    from rest_framework.response import Response
    from rest_framework.views import APIView
    from rest_framework_jwt.serializers import jwt_payload_handler,jwt_encode_handler
    from user.utils import jwt_response_payload_handler
    
    class OauthWeiboBindUser(APIView):
    
        permission_classes = (AllowAny,)
    
        def post(self, request):
            # 绑定用户, 1.已注册用户 2.未注册用户
            # 1.1 获取用户名,密码,weibo_uid
            username = request.data.get('username')
            password = request.data.get('password')
            weibo_uid = request.data.get('weibo_uid')
            if not all([username, password, weibo_uid]):
                return Response({'code':999, 'msg':'参数不全'})
            # 0. 判断是否存在此用户
            try:
                user = User.objects.get(username=username)
            except Exception as e:
                user = None
            # 1. 已注册用户
            if user:
                # 1.2 如果存在就验证 密码,验证通过就绑定,返回token,登录成功
                if user.check_password(password):
                    ou = OauthUser(uid=weibo_uid, user=user, oauth_type='1')
                    ou.save()
                    payload = jwt_payload_handler(user)   # 通过user对象获取到jwt的 payload信息
                    token = jwt_encode_handler(payload)    # 生成token
                    data = jwt_response_payload_handler(token, user)
                    data['type'] = '0'  # 指定为登录成功
                    return Response({'code':0, 'msg':'登录成功','data':data})
                else:
                    return Response({'code':999, 'msg':'密码错误'})
            else:
                # 2. 未注册用户
                # 2.1 生成新用户, 设置用户名密码, 保存, 然后绑定, 返回token, 登录成功
                user = User(username=username)
                user.set_password(password)
                user.save()
                ou = OauthUser(uid=weibo_uid, user=user, oauth_type="1")
                ou.save()
                payload = jwt_payload_handler(user)
                token = jwt_encode_handler(payload)
                data = jwt_response_payload_handler(token, user)
                data['type'] = '0'  # 指定为登录成功
                return Response({'code': 0, 'msg': '登录成功', 'data': data})
    

    1.3 回调地址

     http://127.0.0.1:8888/oauth/weibo/binduser/
    
  • 相关阅读:
    linux内核中GNU C和标准C的区别
    linux内核中GNU C和标准C的区别
    Getting start with dbus in systemd (02)
    Getting start with dbus in systemd (01)
    Getting start with dbus in systemd (03)
    物理内存相关的三个数据结构
    数据类型对应字节数(32位,64位 int 占字节数)
    Linux kernel 内存
    共模电感的原理以及使用情况
    [原创]DC-DC输出端加电压会烧毁
  • 原文地址:https://www.cnblogs.com/Beginner-Y/p/13788438.html
Copyright © 2011-2022 走看看