1. 程式人生 > >權限認證

權限認證

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",]
}

源碼分析

權限認證