Django--权限Permissions的例子


Posted in Python onAugust 28, 2019

权限全局配置:

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

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

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

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

如果不指定就用默认的配置:

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

自定义权限:

from rest_framework.permissions import BasePermission
class MyPermission(BasePermission):
  def has_object_permission(self, request, view, obj):
    """
      控制对obj对象的访问权限,吃案例决绝对所有用户的访问
      不能访问单一结果,但是可以访问列表结果
      has_object_permission是否可以访问数据对象, view表示当前视图, obj为数据对象
      .has_permission(self, request, view)是否可以访问视图, view表示当前视图对象
    """
    return False

我们使用之前写的视图类进行验证:

from rest_framework.permissions import IsAuthenticated
class BookInfoViewSet(mixins.ListModelMixin,mixins.RetrieveModelMixin,GenericViewSet):
  """使用GenericViewSet实现返回列表和单一值"""
 
  # 指定序列化器
  serializer_class = BookInfoSerializer
  # 制定查询集
  queryset = BookInfo.objects.all()
  # authentication_classes = [SessionAuthentication]
  # 登陆者的权限.是Admin还是普通用户 是admin可以访问还是普通用户可以访问
  permission_classes = [IsAuthenticated,MyPermission]

提供的权限

AllowAny 允许所有用户
IsAuthenticated 仅通过认证的用户
IsAdminUser 仅管理员用户
IsAuthenticatedOrReadOnly 认证的用户可以完全操作,否则只能get读取

以上这篇Django--权限Permissions的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python多线程编程方式分析示例详解
Dec 06 Python
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
linux下python使用sendmail发送邮件
May 22 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
使用tensorflow实现线性回归
Sep 08 Python
Python多进程方式抓取基金网站内容的方法分析
Jun 03 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
python缩进长度是否统一
Aug 02 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 Python
Python中函数的返回值示例浅析
Aug 28 #Python
django认证系统实现自定义权限管理的方法
Aug 28 #Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 #Python
对Django的restful用法详解(自带的增删改查)
Aug 28 #Python
Python closure闭包解释及其注意点详解
Aug 28 #Python
python opencv调用笔记本摄像头
Aug 28 #Python
Python threading的使用方法解析
Aug 28 #Python
You might like
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP中替换换行符的几种方法小结
2012/10/15 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
2017/03/29 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
vue如何判断dom的class
2018/04/26 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
postman传递当前时间戳实例详解
2019/09/14 Python
python中return的返回和执行实例
2019/12/24 Python
Python range与enumerate函数区别解析
2020/02/28 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
python代码实现猜拳小游戏
2020/11/30 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
社区反邪教工作方案
2014/06/16 职场文书
2014年学生会工作总结
2014/11/07 职场文书
2014年工人工作总结
2014/11/25 职场文书
感恩主题班会教案
2015/08/12 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
MySQL数据管理操作示例讲解
2022/12/24 MySQL