Django DRF 框架 权限验证其相关
DRF框架权限验证器:
基础验证器
drf中集成了关于权限验证的一些基本模块,具体可以分为:
所有用户均可访问———AllowAny
登录用户可访问–-——IsAuthenticated
仅限管理员权限可以访问——–IsAdminUser
关于基本权限验证模块的使用方法
- 话不多说,上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29from rest_framework.permissions import AllowAny
from rest_framework.views import APIView
class MyPermissions(APIView):
permission_classes = [AllowAny]
#当视图函数中设定permission_classes的值为AllowAny时,这个页面允许任何人访问,也就是说,相当于允许游客进行访问
def get(selfg,request):
return HttpResponse('权限验证通过,欢迎')
from rest_framework.permissions import IsAuthenticated,IsAdminUser
from rest_framework.views import APIView
class MyPermissions(APIView):
permission_classes = [IsAuthenticated]
#当视图函数中设定permission_classes的值为IsAuthenticated时,这个页面允许任何用户访问,也就是说,只要你进行登录,就可以进行访问
def get(selfg,request):
return HttpResponse('权限验证通过,欢迎')
from rest_framework.permissions import IsAdminUser
from rest_framework.views import APIView
class MyPermissions(APIView):
permission_classes = [IsAdminUser]
#当视图函数中设定permission_classes的值为IsAdminUser时,这个页面只允许拥有管理员权限的用户进行访问
def get(selfg,request):
return HttpResponse('权限验证通过,欢迎')
- 话不多说,上代码
自定义权限验证器:
在drf中,允许我们自定义一些权限验证器,来实现我们想要的一些功能,比如说.……留后门、留后门,还有…留后门之类的操作,当然,如果是大公司,同时自己又没有高级权限的话,不建议留后门,毕竟如果留后门被发现了的话不太好,哈哈哈哈
上代码
首先创建一个自定义的权限验证,这个验证就不需要使用自带的模块了,直接自定义
1
2
3
4
5from rest_framework.permissions import BasePermission
class My_permissions(BasePermission):
def has_permission(self,request,view):
if request.query_paramy.get('user') == 'root':
return True在调用权限验证的时候选择使用自定义的权限验证器
1
2
3
4class MyPermissions(APIView):
permission_classes = [My_permissions]
def get(self,request):
return HttpResponse('权限验证通过,欢迎')
限流
全局限流设置:
在setting文件中设定限流要求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES':(
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
),
'DEFAULT_THROTTLE_RATES':{
#单位时间内访问次数限制
#anon匿名用户限流
'anon':'1/second',
#user注册用户限流
'user':'1/second'
}
}- 注册限流信息时,所需要使用的rest_framework模块需要现在INSTALLED_APPS中进行配置才能进行使用,同时,这里使用的时候需要与注册的app名相同
局部限流设置:
无论是局部限流还是全局限流,都需要现在setting文件中进行配置,但是这个配置并不相同
1
2
3
4
5
6REST_FRAMEWORK = {
'DEFAULT_THROTTLE_RATES':{
'anon':'1/second',
'user':'1/second'
}
}在进行局部限流时,不需要导入自带的限流模块
1
2
3
4
5
6from rest_framework.views import APIView
from rest_framework.throttling import UserRateThrottle
class Mythrottling(APIView):
throttling_class = [UserRateThrottle]
def get(self,request):
return Response('这是投票页面')
Django DRF 框架 权限验证其相关
http://sokrates.com.cn/2022/11/30/Study-notes-Python-Django-DRF框架的权限验证器与限流/