zoukankan      html  css  js  c++  java
  • drf认证权限频率

    认证:

    创建认证类(继承BaseAuthentication),重写authenticate,在该方法中校验,如果校验通过返回None,如果校验失败,抛出异常,校验通过也可以返回当前用户和auth,这样在视图类中可以通过request.user,获取当前登录用户,一旦返回值,后续所有认证类都将不再执行,

    视图类中:

    authentication_classes=[MyAuthentication]

    源码执行流程:

    authentication_classes查找顺序(认证类的查找顺序):先在自己中找:authentication_classes=[MyAuthentication]如果没有配置:取配置文件settings中找,如果项目的settings中没有配置,则去drf中内置的settings中找

    局部使用:

    在视图类中配置:authentication_classes=[MyAythentication]

    全局使用:

    在settings中配置:

    REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':['app.MyAuth.Myauthentication',]}

    全局使用局部禁用:

    在视图类中配置:authentication=[]

    权限:(不同用户类型)

    权限类:

    from rest_framework.permissions import BasePermission

    class MyPermission(BasePermission):

      def has_permission(self,request,view):

        if request.user.type==1:

          user_str=request.user.type.get_type_display()

          return True

        else:

          return False

    局部使用:

    在视图类中配置:

    permission_classes=[MyPermissions]

    全局使用:

    在settings中配置:

    'DEFAULT_PERMISSION_CLASSES':['app.MyAuth.MyPermission',],}

    源码分析:

    APIView中的:check_permissions(self,request),进行的权限校验-配置错误信息的显示

    message="错误提示"

    频率的使用:

    创建类

    from rest_framework.throttling import SimpleRateThrottle

    class MyThrottling(SimpleRateThrottle):

      scope="xxx"

      #必须重写get_cache_key,返回什么,频率组件就会以什么做出限制

      def get_cache_key(self,request,view):

        return request.META.get('REMOTE_ADDR')

    在settings中配置:

    'DEFAULT_THROTTLE_RATES':{'xxx':'10/day'}

    局部使用:

    在视图类中:throttle_classes=[MyThrottling]

    全局使用:

    在settings中配置:

    'DEFAULT_THROTTLE_RATES':['app.MyAuth.MyThrottling'],

    源码分析:

    补充:

    token信息放到请求头中,如何去?

    token=request.META.get('token')

    2.django的GET,POST,META,body分别对应HTTP请求的哪部分?

    GET:http请求路径中数据部分

    POST:http请求以urlencode/formdata形式编码的body体部分

    META:http请求头部信息

    body:http请求请求体部分

    path,get_full_path(),FILES

  • 相关阅读:
    bzoj 3527: [Zjoi2014]力
    bzoj 1797: [Ahoi2009]Mincut 最小割
    bzoj 1028: [JSOI2007]麻将
    bzoj 1019: [SHOI2008]汉诺塔
    bzoj 1023: [SHOI2008]cactus仙人掌图
    bzoj 3289: Mato的文件管理
    bzoj 4034: [HAOI2015]T2
    bzoj 1218: [HNOI2003]激光炸弹
    bzoj 2431: [HAOI2009]逆序对数列
    The full stack trace of the root cause is available in the Apache Tomcat/8.0.8 logs.
  • 原文地址:https://www.cnblogs.com/suncunxu/p/10615268.html
Copyright © 2011-2022 走看看