rest_framework 权限功能
权限:
问题:不用视图不用权限可以访问 基本使用 写上一个权限类 创建utils 中 permission.py文件
class SvipPermisson(object):
message = "必须是SVIP用户,否则无权访问" #页面无权时报错提示
def has_permission(self, request, view):
if request.user.user_type != :
return False
return True class OrderView(APIView):
"""
订单相关业务 (只有SVIP用户有权限)
"""
#authentication_classes = [FirstAuthtication, Authtication]
permission_classes = [MyPermission, ]
def get(self, request, *args, **kwargs):
self.dispatch
ret = {'code':, "msg":None, 'data':None }
try:
ret['data'] = ORDER_DICT
except Exception as e:
pass
return JsonResponse(ret) self.check_permissons(request) #返回权限的对象列表 或者说 [权限类的对象]
for permission in self.get_permissions():
if not permission.has_permisstion(requst, self): #如果ha_permisstion返回True 就不执行该函数 就可以通过权限认证
self.permission_denied(
request, message = getattr(permission, 'message', None)
)
可以在全局配置 也可以自己定制 REST_FRAMEWORK = {
#全局使用的认证类
#认证
"DEFAULT_AUTHENTICATION_CLASSES":['api.utils.auth.FirstAuthtication',]
"UNAUTHENTICATED_USER":None #匿名用户 request.user = None #权限
"DEFAULT_PERMISSION_CLASSES":['api.utils.permission.SvipPermisson']
} 如果要自定义
可以在class UserInfoVIew(APIView):
"""
订单相关业务(普通用户)
"""
permission_classes = [PublicPermission,] #写完这样 就不会读全局的权限访问 也可以为空 如permission_classes= [] 源码流程:
dispatch
initial
permission 内置的权限
from rest_framework.permissions import BasePermission
class SVIPPermission(BasePermission): #按规范 需要继承BasePermission
message = "必须是SVIP才能访问"
def has_permission(self, request, view):
if request.user.user_type != :
return False
return True 梳理:
.使用
-类: 继承 BasePermission 必须实现 has_permission方法
from rest_framework.permissions import BasePermission
class SVIPPermission(BasePermission): #按规范 需要继承BasePermission
message = "必须是SVIP才能访问"
def has_permission(self, request, view):
if request.user.user_type != :
return False
return True -返回值:
True #有权访问
False #无权访问
抛出异常 一般不做异常抛出异常
message = "SVIP" 局部:
permission_classes = [Mypermission]
全局:
REST_FRAMEWORK = {
"EDEFAULT_PERMISSION_CLASSES" :['api.utils.perimission.MyPermission']
}
.源码流程
rest_framework 权限功能的更多相关文章
- 实现ABP中Person类的权限功能
菜单项的显示功能已经完全OK了.那么我们就开始制作视图功能吧. 首先测试接口是否正常 我们通过代码生成器将权限和application中大部分功能已经实现了.那么我们来测试下这些接口ok不. 浏览/a ...
- ztree实现权限功能(横向显示)
最近在做权限功能的时候,采用的ztree实现的,但是产品要求最后一层的权限节点要横向显示.开始在网上找的解决方案是用css样式把最后一层的display设置为inline.在我本地电脑上看了下.效果不 ...
- 基于xml 实现动态加载权限功能树列表---EFSFrame企业级开发架构
在学习EFSFrame框架的过程中,感触最深的就是通过xml来实现前台与后台数据的交互,页面设计灵活,不用管后台如何写的,前台与后台的交互唯一的交互通道都是xml,在我们需要添加页面.添加规定的格式的 ...
- 用 Flask 来写个轻博客 (25) — 使用 Flask-Principal 实现角色权限功能
目录 目录 前文列表 扩展阅读 Flask-Principal 使用 Flask-Principal 来实现角色权限功能 添加 Role Model 在 Manager shell 中手动的添加角色 ...
- .NET可视化权限功能界面设计
权限功能是信息系统不可或缺的重要部分,一个优秀的权限设计可以使开发工作事半功倍,给使用者带来良好的使用体验. 企业做生意,都会聘请员工,若是员工数量较多,"权限管理"必不可少,这样 ...
- 【转】具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能
9 月底,苹果正式在北京成立了苹果中国研发中心.近几年,我们也在每年更新的 iOS 系统中不断看到,苹果对中国市场的关照.从早前的九宫格输入法,到最近的骚扰电话拦截,都照顾了国内用户的需求. 在 iO ...
- DRF的认证与权限功能
认证 1.全局配置 在setting.py进行配置. REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( # 'rest_framework. ...
- rest_framework 权限流程
权限流程 权限流程与认证流程非常相似,只是后续操作稍有不同 当用户访问是 首先执行dispatch函数,当执行当第二部时: #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 s ...
- django框架-DRF工程之权限功能
1.相对于flask,原生而言django,DRF做的则更加的合理化,想要给予用户相应的权限,首先需要在settings中进行配置 REST_FRAMEWORK = { 'DEAFAULT_PERMI ...
随机推荐
- 《iOS Human Interface Guidelines》——System Button
系统button 系统button运行一个app特定的动作. API NOTE 在iOS 7中,UIButtonTypeRoundedRect被又一次定义成UIButtonTypeSystem.查看U ...
- vue中export default 在console中是this.$vm
vue中export default 在console中是this.$vm 用vue-cli搭出框架,用webstorm进行开发,参考vue2的官网进行教程学习, 在vue-cli中是用es6的exp ...
- vijos-1382 寻找主人
题意: 给出两个同样长度的数字串: 求两个串是否本质同样.同样则输出最小表示. 长度L似乎给的不正确,大概是2000000左右吧: 题解: 最小表示法裸题.证明正确性啥的详见论文吧: 这东西大体的思路 ...
- Windows环境下通过Git来管理自己的Android代码
前面已经介绍了在Windows下使用git工具来下载Android的源代码,Windows环境下通过Git得到Android源代码,这里记录我使用git工具来管理我自己的代码,git是一种分布式的项目 ...
- 如何用Android studio生成正式签名的APK文件
必须签名之后才可以发布到app商店中. 平时的调试的app都有默认的签名. 下面是生成带签名的APK的步骤: 1. Build 选择 Generate Signed APK 2. 弹出框,第一次选择C ...
- nyoj-737--石子合并(一)(动态规划)
石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆 ...
- [JZOJ 5895] [NOIP2018模拟10.5] 旅游 解题报告 (欧拉回路+最小生成树)
题目链接: https://jzoj.net/senior/#main/show/5895 题目: 题解: 有一个好像比较显然的性质,就是每条边最多经过两次 那么我们考虑哪些边需要经过两次.我们把需要 ...
- 132.try throw catch介绍
#include <iostream> using namespace std; //try尝试执行,抛出throw,throw之后语句不再执行 //catch处理throw的异常 voi ...
- Android 那些年,处理getActivity()为null的日子
在日常开发中的时候,我们经常会使用ViewPager+Fragment进行视图滑动,在某些部分逻辑也许我们需要利用上下文Context(例如基本的Toast),但是由于Fragment只是衣服在Act ...
- Windows环境下使用Guard整合Compass和Livereload进行SASS的开发
配置运行环境 Guard,Compass 和 Livereload 是 Ruby 的 Gem 套件,需要 Ruby 运行环境.另外还需要安装 Ruby 的扩展开发包 Development-Kit,以 ...