博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前后端分离djangorestframework——权限组件
阅读量:7078 次
发布时间:2019-06-28

本文共 1760 字,大约阅读时间需要 5 分钟。

权限permissions

权限验证必须要在认证之后验证

 

权限组件也不用多说,读了源码你就很清楚了,跟认证组件很类似

 

具体的源码就不展示,自己去读吧,都在这里:

 

 

 

局部权限

 

设置model表,其中的type就是用户类型

 

数据库:

 

在根目录创建utils,utils创建permission文件,在其中定义权限类,自定义的权限类必须继承BasePermission类,且必须定义has_permission方法,其中message是权限验证没通过时显示的字段

 

url:

 

view:

 

 开始访问,刚才说了权限是在用户登录认证之后做的处理,所以也必须带上token访问:

好现在是无权访问,修改用户的type为1看看:

 

重启项目再次访问:

 

 

 

如果不带token访问:

 

所以其实在定义的权限类那里可以先作判断是否用户已通过认证,这个可以自行研究

主要代码:

view:

from rest_framework.views import APIViewfrom rest_framework.views import Responsefrom utils.auth import MyAuthfrom utils.permisson import MyPermissionfrom DRF.models import Userimport uuidclass DemoView(APIView):    def get(self, request):        return Response('简单认证')class LoginView(APIView):    def get(self, request):        return Response('请登录,如果没有账号请创建')    def post(self, request):        user = request.data.get('user')        pwd = request.data.get('pwd')        token = uuid.uuid4()        User.objects.create(user=user, pwd=pwd, token=token)        return Response('创建用户成功')class TestView(APIView):    authentication_classes = [MyAuth, ]    permission_classes = [MyPermission, ]    def get(self, request):        return Response('权限等级测试,VIP用户您好,欢迎访问XX。。。')
View

permission:

from rest_framework.permissions import BasePermissionclass MyPermission(BasePermission):    message = '无权访问,您的用户等级太低,充值888元立得永久VIP特权 '    def has_permission(self, request, view):        user_obj = request.user        if user_obj.type == 3:            return False        else:            return True

 

 

 

全局权限

 

 根据前面的认证组件,按同样的套路,全局自然就直接在配置问题里添加就完事儿了,我空出来的地方就是需要添加的权限,自然也是一个列表,跟认证组件一样的写法

 

当然权限也有自带的,都在rest_framework.permissions自行研究:

 

总结 

  • 自定义权限必须继承DRF定义好的权限类,需要用什么就继承什么,且根据继承的类不同,必须要定义该基类里明确规定需要的方法或者属性
  • 权限验证按开发的逻辑必须要在认证组件验证之后才验证
  • 其实这些都跟认证组件差不太多,注意一下就行了,不用多说

 

转载于:https://www.cnblogs.com/yangva/p/10426702.html

你可能感兴趣的文章
【整理】SYSCOMMAND的wParam值的宏定义
查看>>
.net Application的目录
查看>>
洛谷 P1313 计算系数 Label:杨辉三角形 多项式计算
查看>>
YUV色彩空间(转自百度百科)
查看>>
创建服务
查看>>
Sencha Touch 2.1学习图表Chart概述
查看>>
NYOJ467 中缀式变后缀式
查看>>
qwq
查看>>
C#中timer类的用法
查看>>
shell脚本学习
查看>>
自动化交易机器人Beta猪
查看>>
最少的次数
查看>>
用vue开发单页应用的一些心得
查看>>
步步为营:SQLServer查询随机不相同的记录插入临时表
查看>>
About SOuP
查看>>
【12c OCP】CUUG OCP认证071考试原题解析(36)
查看>>
join
查看>>
今天linux遇到的问题
查看>>
分块⑨题
查看>>
简单使用ubuntu
查看>>