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 ...
随机推荐
- Android Material Design-Getting Started(入门)-(一)
转载请注明出处:http://blog.csdn.net/bbld_/article/details/40400343 翻译自:http://developer.android.com/trainin ...
- 用LayerDrawable实现两个图片的叠加效果
Drawable[] layers = new Drawable[2]; layers[0] = new ColorDrawable(primaryColor); layers[1] = new Co ...
- 广播BroadcastReceiver(2)
有序广播的优先级: 发送有序广播的方法有: public void sendOrderedBroadcast(Intent intent,String receiverPermis ...
- linux定时备份mysql数据库文件
1.设定定时器:终端敲入:crontab -e命令 2,然后写入 00 23 * * * /home/db_bak_file/dbbak.sh >>/home/db_bak_fil ...
- akka 原理分析优秀博客
http://www.nyankosama.com/2014/12/15/akka-source/ http://blog.csdn.net/aigoogle/article/details/4210 ...
- POJ 3694 Network(Tarjan求割边+LCA)
Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10969 Accepted: 4096 Descript ...
- 【原创】Unable to read TLD "META-INF/c.tld" from JAR file 解决方法
type Exception report message description The server encountered an internal error () that prevented ...
- asp.net 连接字符串的多种写法
一.使用OleDbConnection对象连接OLE DB数据源 1.连接Access 数据库 Access 2000: “provider=Microsoft.Jet.Oledb.3.5;Data ...
- firewall 实现数据的端口转发
端口转发:firewall-cmd --add-port=80/tcp firewall-cmd --add-port=10050/tcp firewall-cmd --add-forward-por ...
- 关于注意力机制(《Attention is all you need》)
深度学习做NLP的方法,基本上都是先将句子分词,然后每个词转化为对应的词向量序列.(https://kexue.fm/archives/4765) 第一个思路是RNN层,递归进行,但是RNN无法很好地 ...