zoukankan      html  css  js  c++  java
  • 权限组件

    权限简介:

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

    权限组件的使用

    在权限类中:

    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)

    点开它,我们去看一下

  • 相关阅读:
    HTML5 WEB SQL
    Android-day04
    Android-day03
    Android-day02
    Android-day01
    java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
    事务管理、整合Junit、整合Web、SSH整合
    AOP、AspectJ、JdbcTemplate
    Spring基础
    Hibernate对连接池的支持
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11129916.html
Copyright © 2011-2022 走看看