Django DRF认证组件的流程是什么

  

Django DRF认证组件的流程是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

视图函数中加上认证功能,流程见下图

进口hashlib
  导入的时间
  def get_random(名称):
  md=hashlib.md5 ()
  md.update(字节(str (time.time()),编码=& # 39;utf - 8 # 39;))
  md.update(字节(名称、编码=& # 39;utf - 8 # 39;))
  返回md.hexdigest ()
  从rest_framework。视图导入APIView
  类登录(APIView):
  authentication_classes=[AuthLogin]
  def post(自我,请求,* args, * * kwargs):
  响应={& # 39;状态# 39;:100 & # 39;味精# 39;:没有}
  name=request.data.get(& # 39;名字# 39;)
  pwd=request.data.get (& # 39; pwd # 39;)
  用户=models.User.objects。过滤器(name=名、密码=pwd)当代()
  如果用户:
  响应[& # 39;味精# 39;]=& # 39;登陆成功& # 39;
  #随机字符串可以是用户名加当前时间生成的mds
  令牌=get_random(名称)
  #如果有记录,就只需要更新,不需要重新插入
  # models.UserToken.objects.create(令牌=令牌、用户=用户)
  #查询更新
  # user_agent
  models.UserToken.objects。update_or_create(用户=用户,默认={& # 39;标记# 39;:令牌})
  响应[& # 39;标记# 39;]=令牌
  其他:
  响应[& # 39;状态# 39;]=101
  响应[& # 39;味精# 39;]=& # 39;用户名或密码错误& # 39;
  返回响应(响应)
。权限导入BasePermission
  从rest_framework。异常进口NotAuthenticated
  从app01导入模型
  # BaseAuthentication
  类AuthLogin (BaseAuthentication):
  def(自我,请求进行身份验证):
  #封装后的请求
  令牌=request.GET.get(& # 39;标记# 39;)
  #打印(令牌)
  ret=models.UserToken.objects.filter(令牌=令牌)当代()
  如果延迟:
  返回ret.user,令牌
  其他:
  提高NotAuthenticated(& # 39;您没有登陆& # 39;)

在def初始(自我,请求,* args, * * kwargs):函数中找到认证功能

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

 Django DRF认证组件的流程是什么

流程总结:

    <李>派遣方法里self.initial里面有个认证组件self.perform_authentication(请求) <李>到了APIview返回了请求。用户(封装后的请求) <李>去请求类里找用户方法,被包装成了属性,里面执行了一个方法,self._authticate方法 <李> self._authticate方法里从自己的身份验证器一个一个的取东西,身份验证器 <李>于是查看身份验证器,是初始化的时候init传过来了,自我。李的身份验证器=身份验证器或() <李>到调度里找初始化的时候,也就是APIView的initialize_request方法传了self.authenticators,里面是一个get_authenticators的方法 <李>自我。authentication_classes是[类1类2类3]一个一个取,加括号执行。生成一个一个对象。最后返回到前面的请求的_authenticate方法李 <>李拿到对象之后,执行user_auth_tuple=authenticator.authenticate(自我) <李>注意验证是需要在视图函数中自己定义的,自我。用户自我。auth=user_auth_tuple返回两个值,流程结束。

感谢各位的阅读!看完上述内容,你们对Django DRF认证组件的流程是什么大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注行业资讯频道。

Django DRF认证组件的流程是什么