首页 > 其他分享 >权限组件

权限组件

时间:2023-12-27 15:23:05浏览次数:27  
标签:CommonPermission permission request user 组件 权限 type

权限组件的书写

例:书写权限组件(CommonPermission)

第一步:新建一个py文件(以permission为例)

第二步:书写认证类,并继承继承BasePermission

# 首先导入模块
from rest_framework.permissions import BasePermission

# 书写权限类,重写has_permission方法
class CommonPermission(BasePermission):
    def has_permission(self, request, view):

 

第三步:在类中重写has_permission方法

# 只有超级管理员能访问,其他人都不能访问
class CommonPermission(BasePermission):
    def has_permission(self, request, view):
        # 到这,正常应该登录完了,登录完了 request.user 当前登录用户
        # 拿到用户后判断用户是否有权限--》用户表汇总用户类型字段 user_type--》根据类型判断权限
        try:
            # 后续可能使用ACL权限控制,RBAC权限控制
            user_type = request.user.user_type
            if user_type == 2:
                return True
            else:
                # user.get_字段名_display()  返回这个字段的choice对应的文字
                self.message = '您是:%s,您没有权限操作这个' % request.user.get_user_type_display()
                return False
        except Exception as e:
            # 未登录用户也没有权限
            if 'login' in request.path:
                return True
            else:
                self.message = '您没有登录,您没有权限操作这个'
                return False

 

第四步:使用权限类

方式一:局部配置,在视图函数内书写:

class BookDetailView(GenericViewSet):
        permission_classes = [CommonPermission]

 

方式二:全局配置,在settings配置文件中书写

REST_FRAMEWORK = {
        'DEFAULT_PERMISSION_CLASSES': ['app01.permission.CommonPermission']
}

局部禁用:

class 视图类(APIView):
        permission_classes = []

 

标签:CommonPermission,permission,request,user,组件,权限,type
From: https://www.cnblogs.com/wellplayed/p/17930644.html

相关文章

  • permission.js 主要是对权限管理进行分析
    //引入路由importrouterfrom'./router'//引入仓库importstorefrom'./store'//引入ElementUI中的提示组件messageimport{Message}from'element-ui'//引入nprogress进度条importNProgressfrom'nprogress'//progressbarimport......
  • 云计算:从基础架构原理到最佳实践之:云计算基础架构与组件
    1.背景介绍云计算是一种基于互联网的计算资源分配和共享模式,它可以让用户在不需要购买和维护计算机硬件和软件的基础设施的情况下,通过互联网访问计算资源。云计算的核心思想是将计算资源作为服务提供,让用户按需购买。云计算的发展有助于减少企业的计算机硬件和软件的购买和维护成本......
  • MRS基础组件之HBase与Hive开发应用_tyt2023
    MRS基础组件之HBase与Hive开发应用本实验基于MRS环境,介绍如何利用HBase与Hive来进行相关操作。其中,HBase主要介绍包括如何利用JavaAPI创建数据表、写入数据、查看数据以及删除数据;而Hive则通过介绍UDF、UDTF和UDAF等自定义函数的基本操作,讲解如何进行自定义数据处理和清洗作业。......
  • RPC 权限控制与身份验证: 保障系统的安全性和合规性
    1.背景介绍RPC(RemoteProcedureCall,远程过程调用)是一种在分布式系统中,允许程序调用另一个程序的过程或函数,就像调用本地程序一样,这种调用过程在网络上进行。RPC技术使得分布式系统中的不同程序可以相互协作,共享资源,实现高性能和高可用性。然而,随着分布式系统的发展和复杂性的增加......
  • 用DevExpress WPF Windows 10 UI组件,轻松构建触摸优先的业务型应用UX(上)
    DevExpressWPF的Windows10UI组件包含了一系列应用导航组件、Toast通知、对话框组件等,能帮助用户轻松开发漂亮的业务型应用程序,并模仿触摸优先的Windows10ProUX。P.S:DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress......
  • 解决Linux环境下Android调试adb没有权限问题
    转载自:https://codeleading.com/article/1564378047/问题描述adbdevicesnopermission(userxxxisnotintheplugdevgroup);see[http://developer.android.com/tools/device.html]解决方案在/etc/udev/rules.d/目录下创建文件:51-android.rules,并在文件中填入如......
  • 视图集ModelViewSet drf之路由 认证组件
    视图集ModelViewSetModelViewSet-视图类:GenericAPIView(继承)-路由映射:listcreateretrieveupdatedestroy继承5个视图扩展类:CreateModelMixin,ListModelMixin,UpdateModelMixin,DestroyModelMixin,RetrieveModelMixin-路由写法改变:ViewSetMixin只要继承它,路由写法就......
  • 亿级并发,API网关等核心组件,如何设计?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • C++ Qt开发:数据库与TableView多组件联动
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableView组件与数据库联动的常用方法及灵活运用。在Qt中,通常我们不会在TableView等组件中保存数......
  • kafka 自定义开发Sink Connector组件(兼容mysql和oracle)
    1.情景展示目前,市场上已有不少能从kafka消费数据的插件,如:io.confluent.connect.jdbc.JdbcSinkConnector,但这个组件有个致命的问题是,只能同步字符串类型。具体意思是:源库源表的日期类型字段,往目标库目标表插入数据的时候,只能是字符串类型,无法自动将其转成日期类型。这样一来的......