权限Permissions
权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。
在执行视图的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相关推荐
- RESTful之权限Permissions
权限控制可以限制用户对于视图的访问和对于具体数据对象的访问. 在执行视图的dispatch()方法前,会先进行视图访问权限的判断 在通过get_object()获取具体对象时,会进行对象访问权限的判断 ...
- Django 权限Permissions python
权限全局配置: REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthe ...
- javascript写android权限,Permissions权限申请实例
对于移动开发,我们知道Android 6.0之后对于权限管理做了很大的升级,其类似于IOS的管理管理方式需要用手动授权是否允许使用当前权限, 在RN开发中同样存在这样一个模块. 本文介绍了React ...
- Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- Android 的权限级别小记
Android 的权限级别总共有4种 android:protectionLevel=["normal" | "dangerous" | "signa ...
- C#枚举中的位运算权限分配浅谈
常用的位运算主要有与(&), 或(|)和非(~), 比如: 1 & 0 = 0, 1 | 0 = 1, ~1 = 0 在设计权限时, 我们可以把权限管理操作转换为C#位运算来处理. 第 ...
- Android 6.0动态权限
新项目,新苦B开始, 从Android 6.0(API 23)开始,允许用户在应用运行时决定是否允许权限,而不是在应用安装的时候.这种方法简化了应用的安装过程,因为用户在安装或更新应用的时候不需要允许 ...
- sql server定义_在SQL Server中查看定义权限
sql server定义 We have various database objects such as view, stored procedures, triggers, functions a ...
- 简单几行代码申请权限
众所周知,在Android6.0以上增加了动态申请权限这玩意(targetSdkVersion >= 23). 那么问题来了,what?when?how? What: 在targetSdkVer ...
- zookeeper的acl权限控制_zookeeper权限acl与四字命令
权限acl介绍,acl的构成与id acl是Access control lists 的缩写,也就是权限控制列表: 针对节点可以设置相关读写等权限,目的是为了保障数据安全性 权限permissions ...
最新文章
- BBC称中国人加班时间远超欧美:工作效率未必高
- boost::system模块实现初始化顺序的测试程序
- 下列哪项能正确遍历文件夹内所有文件?
- js/jquery循环提取table单元格值
- 领域模型中的各种角色
- 通过@Import注解把类注入容器的四种方式
- 简单实用的 TensorFlow 实现 RNN 入门教程
- tftp下载文件为中文名【原创】
- Mysql优化系列(1)--Innodb引擎下mysql自身配置优化
- php助理工作内容,生产助理的工作职责
- 分类模型的评价指标--混淆矩阵,ROC曲线,AUC及sklearn.metrics.roc_curve参数说明
- ntp版本导致时间同步不成功问题
- Linux压缩与解压缩文件或文件夹命令
- 奇怪的google博客搜索
- 关于php的广告语,解说词、广告词、欢迎词专题训练a href=http://ruiwen.com/friend/list.php(教师中心专稿)/a...
- mysql 处理文本数据_mysql文本处理函数实例(数据处理函数的使用一)
- 手机格式化的计算机原理,格式化也不靠谱?教你如何彻底删除手机上的数据
- 【ps功能精通】3.图层和选取
- 机器学习系列(一), 监督学习和无监督学习
- Redis中setex与setnx的区别?