权限
基本使用
class MyPermission(object):
'''
在权限类中的has_permission写入权限认证
用户的权限类中返回参数有True,False
True为通过权限认证,False为未通过权限认证
'''
def has_permission(self, request, view):
# 用户登录成功后获得返回的信息,并将获取的信息封装在request中
# 可以通过request.user, request.auth 获取返回元组的两个参数(user_token.user, user_token)
# 第一个参数为用户对象,第二个对象为用户的token对象
if request.user.user_type == 3:
return True
return False
class OrderView(APIView):
'''
订单相关业务,只有SVIP能够访问
'''
permission_classes = [MyPermission, ]
def get(self, request, *args, **kwargs):
# self.dispatch
print(request.user, request.auth)
ret = {'code': 1000, 'msg': None, 'data': None}
ret['data'] = ORDER_DICT
return JsonResponse(ret)
权限的全局使用
from rest_framework.permissions import BasePermission
class MyPermission(BasePermission):
# 没有权限时,报的错误信息
message = "必须是SVIP才能访问"
def has_permission(self, request, view):
if request.user.user_type == 3:
return True
return False
REST_FRAMEWORK = {
#认证的相关信息
'DEFAULT_AUTHENTICATION_CLASSES': ['api.utils.auth.MyAuthtication'],
# 当认证为匿名用户时,request.user = '匿名用户'/None
'UNAUTHENTICATED_USER': lambda: '匿名用户', # None
# 当认证为匿名用户时,request.auth = None
'UNAUTHENTICATED_TOKEN': None,
#权限的相关信息
'DEFAULT_PERMISSION_CLASSES': ['api.utils.permission.MyPermissio