權限認證
阿新 • • 發佈:2019-03-28
svi default ger esp sage iss class ice rim
簡介
比如: 超級用戶才可以訪問指定的數據,普通用戶訪問不了. 所以使用權限組件對其限制
權限類使用順序:先用視圖類中的權限類,再用settings裏配置的權限類,最後用默認的權限類
# models class User(models.Model): name = models.CharField(max_length=32) pwd = models.CharField(max_length=32) # user_type = models.IntegerField(choices=((1,'超級用戶'),(2, '普通用戶'))) ty = models.Foreign(to='Type') class Type(models.Model): id = models.AutoField(primery_key=True) name = models.CharField(max_length=32)
局部使用
from rest_framework.permissions import BasePermission class UserPermission(BasePermission): message = '不是超級用戶,查看不了' def has_permission(self, request, view): # user_type = request.user.get_user_type_display() # if user_type == '超級用戶': user_type = request.user.user_type print(user_type) if user_type == 1: return True else: return False class Course(APIView): authentication_classes = [TokenAuth, ] permission_classes = [UserPermission,] def get(self, request): return HttpResponse('get') def post(self, request): return HttpResponse('post')
在視圖類中加入
permission_classes = [UserPermission,]
全局使用
REST_FRAMEWORK={
"DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",],
"DEFAULT_PERMISSION_CLASSES":["app01.service.permissions.SVIPPermission",]
}
源碼分析
權限認證