权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。

  • 在执行视图的dispatch()方法前,会先进行视图访问权限的判断

  • 在通过get_object()获取具体对象时,会进行模型对象访问权限的判断

使用

可以在配置文件中设置默认的权限管理类,如

REST_FRAMEWORK = {
  'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',)
}

如果未指明,则采用如下默认配置:

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.AllowAny',
)

也可以在具体的视图中通过permission_classes属性来设置,如

from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIViewclass ExampleView(APIView):permission_classes = (IsAuthenticated).....

提供的权限

  AllowAny 允许所有用户

  IsAuthenticated 仅通过认证的用户

  IsAdminUser 仅管理员用户

  IsAuthenticatedOrReadOny 已经登录认证的用户可以对数据进行增删改操作,没有登录认证的只能查看数据

举例

from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.generics import RetrieveAPIViewclass BookDetailView(RetrieveAPIView):queryset = BookInfo.objects.all()serializer_class = BookInfoSerializerauthentication_classes = [SessionAuthentication]permission_classes = [IsAuthenticated]

自定义权限

如需自定义权限,需继承rest_framework.permissions.BasePermission父类,并实现以下两个任何一个方法或全部

  • .has_permission(self, request, view)

    是否可以访问视图, view表示当前视图对象

  • .has_object_permission(self, request, view, obj)

    是否可以访问数据对象, view表示当前视图, obj为数据对象

例如:

class MyPermission(BasePermission):def has_object_permission(self, request, view, obj):"""控制对obj对象的访问权限,此案例决绝所有对对象的访问"""return Falseclass BookInfoViewSet(ModelViewSet):queryset = BookInfo.objects.all()serializer_class = BookInfoSerializerpermission_classes = [IsAuthenticated, MyPermission]

转载于:https://www.cnblogs.com/HZLS/p/11406314.html

权限Permissions相关推荐

  1. RESTful之权限Permissions

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

  2. Django 权限Permissions python

    权限全局配置: REST_FRAMEWORK = {   'DEFAULT_PERMISSION_CLASSES': (     'rest_framework.permissions.IsAuthe ...

  3. javascript写android权限,Permissions权限申请实例

    对于移动开发,我们知道Android 6.0之后对于权限管理做了很大的升级,其类似于IOS的管理管理方式需要用手动授权是否允许使用当前权限, 在RN开发中同样存在这样一个模块. 本文介绍了React ...

  4. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  5. Android 的权限级别小记

    Android 的权限级别总共有4种 android:protectionLevel=["normal" | "dangerous" | "signa ...

  6. C#枚举中的位运算权限分配浅谈

    常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...

  7. Android 6.0动态权限

    新项目,新苦B开始, 从Android 6.0(API 23)开始,允许用户在应用运行时决定是否允许权限,而不是在应用安装的时候.这种方法简化了应用的安装过程,因为用户在安装或更新应用的时候不需要允许 ...

  8. sql server定义_在SQL Server中查看定义权限

    sql server定义 We have various database objects such as view, stored procedures, triggers, functions a ...

  9. 简单几行代码申请权限

    众所周知,在Android6.0以上增加了动态申请权限这玩意(targetSdkVersion >= 23). 那么问题来了,what?when?how? What: 在targetSdkVer ...

  10. zookeeper的acl权限控制_zookeeper权限acl与四字命令

    权限acl介绍,acl的构成与id acl是Access control lists 的缩写,也就是权限控制列表: 针对节点可以设置相关读写等权限,目的是为了保障数据安全性 权限permissions ...

最新文章

  1. BBC称中国人加班时间远超欧美:工作效率未必高
  2. boost::system模块实现初始化顺序的测试程序
  3. 下列哪项能正确遍历文件夹内所有文件?
  4. js/jquery循环提取table单元格值
  5. 领域模型中的各种角色
  6. 通过@Import注解把类注入容器的四种方式
  7. 简单实用的 TensorFlow 实现 RNN 入门教程
  8. tftp下载文件为中文名【原创】
  9. Mysql优化系列(1)--Innodb引擎下mysql自身配置优化
  10. php助理工作内容,生产助理的工作职责
  11. 分类模型的评价指标--混淆矩阵,ROC曲线,AUC及sklearn.metrics.roc_curve参数说明
  12. ntp版本导致时间同步不成功问题
  13. Linux压缩与解压缩文件或文件夹命令
  14. 奇怪的google博客搜索
  15. 关于php的广告语,解说词、广告词、欢迎词专题训练a href=http://ruiwen.com/friend/list.php(教师中心专稿)/a...
  16. mysql 处理文本数据_mysql文本处理函数实例(数据处理函数的使用一)
  17. 手机格式化的计算机原理,格式化也不靠谱?教你如何彻底删除手机上的数据
  18. 【ps功能精通】3.图层和选取
  19. 机器学习系列(一), 监督学习和无监督学习
  20. Redis中setex与setnx的区别?

热门文章

  1. Exchange2010中文版安装教程
  2. 缺少公钥问题的解决方法[转]
  3. 在 Mac 上的 Safari 浏览器中如何放大网页?
  4. 如何从视频中删除声音?
  5. iOS开发之将base64位编码的字符串转换为图片,data转图片,图片转data
  6. mac效率工具alfred 4汉化版
  7. Affinity Publisher for Mac(实用桌面排版工具)
  8. 如何在苹果MacBook Pro上打开和使用Touch Bar Zoom?
  9. 深度学习中的自动编码器:TensorFlow示例
  10. 99个wordpress经典插件