python前后端分离前端权限_前后端分离djangorestframework——权限组件

本文介绍了在Django Rest Framework中实现前后端分离的权限管理,包括局部权限和全局权限的设置。首先,定义了权限类,需要继承`BasePermission`并实现`has_permission`方法。然后在视图中通过`permission_classes`设置权限。如果用户未通过认证,权限验证会失败。此外,还展示了如何自定义认证和权限类,以及如何在配置中设置全局权限。
摘要由CSDN通过智能技术生成

权限permissions

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

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

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

ef5ae1bdc00111a6d89722eec2804d17.png

a219f3e7c10dfc0f954270be08d06a5d.png

局部权限

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

fdaa97b939b8f791bfa1ce4bb8cc8cd9.png

数据库:

6f4dafbcac08f67c93a5136f93866fe9.png

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

fbd69966e22431612b6d04c1112d2b54.png

url:

1bb29b63b996b856cd4a5e2a166e7929.png

525a8ba7aa1c866b0f8788cd37b68c5d.png

view:

3e54aa6698f31e03f251d7d6efa5cc21.png

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

c4f5a792449c069639b913bfe26ad86e.png

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

6c00c0be671446ac339dffa69943e8a8.png

重启项目再次访问:

84997ac94505d1e640eff909cebf39a2.png

如果不带token访问:

52923f6fbed853ee746db7d7f99e122b.png

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

主要代码:

view:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

from rest_framework.views importAPIViewfrom rest_framework.views importResponsefrom utils.auth importMyAuthfrom utils.permisson importMyPermissionfrom DRF.models importUserimportuuidclassDemoView(APIView):defget(self, request):return Response('简单认证')classLoginView(APIView):defget(self, request):return Response('请登录,如果没有账号请创建')defpost(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('创建用户成功')classTestView(APIView):

authentication_classes=[MyAuth, ]

permission_classes=[MyPermission, ]defget(self, request):return Response('权限等级测试,VIP用户您好,欢迎访问XX。。。')

View

permission:

from rest_framework.permissions importBasePermissionclassMyPermission(BasePermission):

message= '无权访问,您的用户等级太低,充值888元立得永久VIP特权'

defhas_permission(self, request, view):

user_obj=request.userif user_obj.type == 3:returnFalseelse:return True

全局权限

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

b822e8e3c9e4c5e509b531f227393f8e.png

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

429b204c8a7a5db3af52ba34ec67b5a0.png

总结

自定义权限必须继承DRF定义好的权限类,需要用什么就继承什么,且根据继承的类不同,必须要定义该基类里明确规定需要的方法或者属性

权限验证按开发的逻辑必须要在认证组件验证之后才验证

其实这些都跟认证组件差不太多,注意一下就行了,不用多说

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值