美文网首页
认证,权限,节流,解析器

认证,权限,节流,解析器

作者: 苗_a | 来源:发表于2019-05-07 20:18 被阅读0次

    通过as_view方法,执行dispatch函数,在dispatch函数中通过request的method方法,调用视图类的不同函数
    as_view方法, 执行dispatch方法
    继承rest framework 的APIView类APIView

    继承了Django的View,并且重写了dispatch方法

    微信截图_20190507192303.png

    封装request

    request = self.initialize_request(request, *args, **kwargs)
    self.request = request

    执行initial方法

    self.initial(request, *args, **kwargs)

    封装的request返回一个Request类的实例对象

    图片.png

    get_authenticators方法authentication_classes是一个放置认证类的列表,那么get_authenticators方法返回的就是认证类的实例化对象列表,传入到重写的request对象中

    图片.png

    执行initial方法perform_authentication函数

    图片.png

    perform_authentication函数调用封装后的requestd对象的user

    图片.png

    request.user方法调用了_authenticate方法

    图片.png

    _authenticate方法self.authenticators其中self指的是封装后的request对象

    图片.png

    权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。在执行视图的dispatch()方法前,会先进行视图访问权限的判断在通过get_object()获取具体对象时,会进行对象访问权限的判断

    可以在配置文件中设置默认的权限管理类,如
    REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.IsAuthenticated',
    )
    也可以在具体的视图中通过permission_classes属性来设置,如
    from rest_framework.permissions import IsAuthenticated
    from rest_framework.views import APIView
    class ExampleView(APIView):
    permission_classes = (IsAuthenticated,)

    提供的权限

    AllowAny 允许所有用户
    IsAuthenticated 仅通过认证的用户
    IsAuthenticatedOrReadOnly 认证的用户可以完全操作,否则只能get读取
    设立一个全局变量字典,对于匿名用户,将用户的IP作为字典的键;对于登陆用户,将用户的用户名作为字典的键。设置字典的值为一个列表,列表中存储了用户访问的时间,可以通过对列表中的时间进行操作来控制访问频率


    图片.png

    setting中的配置

    图片.png

    如果使用URLPathVersioning,路由格式如下

    url(r"^(?P<version>[v1|v2]+)/version/",VersionView.as_view(),name='vvvv')

    进行全局设置后,用的时候只需要用request.data就可以自动解析数据为Json格式

    作用就是服务端接收客户端传过来的数据,把数据解析成自己想要的数据类型的过程


    图片.png

    解析器的作用

    根据请求头 content-type 选择对应的解析器对请求体内容进行处理。
    有application/json,x-www-form-urlencoded,form-data等格式

    settings.py 文件配置

    图片.png

    局部使用

    在view.py中设置


    图片.png

    在视图类加上

    图片.png

    相关文章

      网友评论

          本文标题:认证,权限,节流,解析器

          本文链接:https://www.haomeiwen.com/subject/pmgyoqtx.html