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 相关文章推荐
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
python3用PIL把图片转换为RGB图片的实例
Jul 04 Python
Python 的字典(Dict)是如何存储的
Jul 05 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
python conda操作方法
Sep 11 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
keras.layer.input()用法说明
Jun 16 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 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或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
fmt:formatDate的输出格式详解
2014/01/09 Javascript
js读取并解析JSON类型数据的方法
2015/11/14 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Vue父组件调用子组件事件方法
2018/02/23 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
Python实现建立SSH连接的方法
2015/06/03 Python
Python找出list中最常出现元素的方法
2016/06/14 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
会议活动邀请函
2014/01/27 职场文书
小学生春游活动方案
2014/08/20 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
原告离婚代理词
2015/05/23 职场文书