• 权限组件


    权限简介:

    只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制

    权限组件的使用

    在权限类中:

    from rest_framework.permissions import BasePermission  # 导入继承的模块
    
    class MyPermision(BasePermission):
        message = '不是超级用户,查看不了'  # 如果不指定message,前端返回的信息是英文
        def has_permission(self, request, view):
            if request.user.user_type == 1:
                return True
            else:
                return False

    在视图类中:

    class Books(APIView):
        # authentication_classes = [MyAuth, ]  # 这里注释了是因为在settings里设置了全局使用
        # 只有超级用户才能访问该接口
        permission_classes = [MyPermision, ]   # []内可以写多个权限类
        def get(self, request):
            # request.user就是当前登录用户,前面必须返回才能获取到
            print(request.user.name)
            return Response('返回了所有的图书')

    演示效果:

    普通用户登录之后访问,因为不是超级用户,不能访问。

    但错误提示是英文,如何改成中文,就必须指定message='中文'

    超级用户登录了可以查看所有图书接口

    1、局部使用

    2、全局使用

    REST_FRAMEWORK={"DEFAULT_PERMISSION_CLASSES":["app01.MyAuths.MyPermision",]
    }

    3、局部禁用

    permission_classes = []

    源码分析

    在APIView里找到dispatch,点开dispatch找到self.check_permissions(request)

    点开它,我们去看一下

  • 相关阅读:
    《架构整洁之道》阅读笔记
    设计模式——单例模式
    设计模式——工厂模式使用
    记一次同事安装我自定义一Python3 SDK在window10安装失败情况
    CentOS7常用的一些命令
    Java
    Java
    Java
    Java
    python
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11129916.html
Copyright © 2020-2023  润新知