博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rest-framework-权限组件
阅读量:5952 次
发布时间:2019-06-19

本文共 1456 字,大约阅读时间需要 4 分钟。

一 权限简介

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

二 局部使用

from rest_framework.permissions import BasePermissionclass UserPermission(BasePermission):    message = '不是超级用户,查看不了'    def has_permission(self, request, view):        # user_type = request.user.get_user_type_display()        # if user_type == '超级用户':        user_type = request.user.user_type        print(user_type)        if user_type == 1:            return True        else:            return Falseclass Course(APIView):    authentication_classes = [TokenAuth, ]    permission_classes = [UserPermission,]    def get(self, request):        return HttpResponse('get')    def post(self, request):        return HttpResponse('post')

局部使用只需要在视图类里加入:

permission_classes = [UserPermission,]

三 全局使用

REST_FRAMEWORK={    "DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",],    "DEFAULT_PERMISSION_CLASSES":["app01.service.permissions.SVIPPermission",]}

四 源码分析

def check_permissions(self, request):    for permission in self.get_permissions():        if not permission.has_permission(request, self):            self.permission_denied(                request, message=getattr(permission, 'message', None)                )

self.get_permissions()

def get_permissions(self):     return [permission() for permission in self.permission_classes]

权限类使用顺序:先用视图类中的权限类,再用settings里配置的权限类,最后用默认的权限类

 

posted on
2019-01-05 20:47 阅读(
...) 评论(
...)  

转载于:https://www.cnblogs.com/jokezl/articles/10226075.html

你可能感兴趣的文章
图像处理之形态学梯度计算
查看>>
最长公共子序列(POJ1458)
查看>>
TouchJSON的简单使用
查看>>
输入法编辑器(IME)程序设计(3)
查看>>
C/C++中各种类型int、long、double、char表示范围(最大最小值)
查看>>
vbs 中调用shell.application 简单函数
查看>>
应用程序委托和新的单例(译)
查看>>
通用线程 -- sed 实例
查看>>
深入PHP使用技巧之变量
查看>>
Android中如何提取和生成mp4文件
查看>>
水晶报表基础入门——4.水晶报表排序、分组技术
查看>>
Dumping ssl passwords with sslstrip
查看>>
C# Winform编程之Button
查看>>
2-7 StatusStrip 控件
查看>>
CCNP路由重分发(四)EIGRP-to-ISIS
查看>>
巩固shell基础知识
查看>>
C#判断当前运行环境是否64bit
查看>>
RHEL6基础之十二RHEL用户和组基础
查看>>
让Python删除window下文件
查看>>
WCF简单教程(4) 数据契约
查看>>