• rest_framework 认证系统


    def get_random_str(user):
        import hashlib,time
        ctime=str(time.time())
    
        md5=hashlib.md5(bytes(user,encoding="utf8"))
        md5.update(bytes(ctime,encoding="utf8"))
    
        return md5.hexdigest()
    
    
    class Login2(APIView):
        # def get(self, request):
        #     return render(request, 'login2.html')
    
        def post(self, request):
    
            res = {'code':1000,'msg':None}
            try:
                user = request.data.get('user')
                pwd = request.data.get('pwd')
                user_obj = User.objects.filter(user=user,pwd=pwd).first()
                print(user,pwd,user_obj)
                if not user_obj:
                    res['code'] = 1001
                    res['msg'] = '用户名或密码错误'
                else:
                    token = get_random_str(user)
                    UserToken.objects.update_or_create(user=user_obj, defaults={"token": token})
                    res['token'] = token
    
            except Exception as e:
                res['code'] = 1002
                res['msg'] = str(e)
    
            return JsonResponse(res, json_dumps_params={"ensure_ascii": False})

    上面的认证系统是根据源码自己写的逻辑 

    下面我们就先来看看源码

    from app01.models import UserToken
    
    from rest_framework.exceptions import AuthenticationFailed
    
    from rest_framework.authentication import BaseAuthentication
    
    class TokeAuth(BaseAuthentication):
    
        def authenticate(self, request):
    
            token = request.GET.get("token", None)
            print(token)
    
            token_obj = UserToken.objects.filter(token=token).first()
            if token_obj:
                return token_obj.user.user,token_obj
            else:
                raise AuthenticationFailed('认证失败!')

    以上就是rest_framework提供的 认证 

     

  • 相关阅读:
    解题报告:luogu P3853 [TJOI2007]路标设置
    解题报告:luogu P2678 跳石头
    SG函数
    解题报告:CF622F
    解题报告:luogu P1144 最短路计数
    树剖小结(简述)
    LCA之tarjan离线
    %你赛2020.2
    一个小证明(题解 P5425 Part1)
    科创版简介
  • 原文地址:https://www.cnblogs.com/yftzw/p/9417922.html
Copyright © 2020-2023  润新知