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实现将元祖转换成数组的方法
May 04 Python
python递归删除指定目录及其所有内容的方法
Jan 13 Python
利用python如何处理nc数据详解
May 23 Python
Python微信操控itchat的方法
May 31 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
Python有参函数使用代码实例
Jan 06 Python
如何理解python中数字列表
May 29 Python
使用tensorflow进行音乐类型的分类
Aug 14 Python
Python用户自定义异常的实现
Dec 25 Python
python中print格式化输出的问题
Apr 16 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 Python
使用Python开发冰球小游戏
Apr 30 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
ThinkPHP中关联查询实例
2014/12/02 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
详解Django中的过滤器
2015/07/16 Python
Python实现单词翻译功能
2017/06/06 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
在Python中增加和插入元素的示例
2018/11/01 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Python: 传递列表副本方式
2019/12/19 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
2015年采购员工作总结
2015/04/27 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
python 模块重载的五种方法
2021/04/24 Python
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
使用Python开发冰球小游戏
2022/04/30 Python