zoukankan      html  css  js  c++  java
  • 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提供的 认证 

     

  • 相关阅读:
    CCS过渡和动画
    使用Vue.prototype在vue中注册和使用全局变量
    vuex的使用
    Vue组件懒加载
    JavaScript 箭头函数(Lambda表达式)
    JS命名规范
    css命名规范
    vertical-align和line-height的理解及实例
    </2017><2018>
    给当当同学的random data
  • 原文地址:https://www.cnblogs.com/yftzw/p/9417922.html
Copyright © 2011-2022 走看看