rest-framework的权限组件

权限组件

写在开头:

首先要在models表中添加一个用户类型的字段:

class User(models.Model):
    name=models.CharField(max_length=32)
    pwd=models.CharField(max_length=32)
    type_choice=((1,"普通用户"),(2,"VIP"),(3,"SVIP"))
    user_type=models.IntegerField(choices=type_choice,default=1)

1.局部权限:

#######################权限类#############################33
class SVIPPermission(object):
    message="只有超级用户拥有访问权限!"
    def has_permission(self,request,view):
        username=request.user
        user_type=User.objects.filter(name=username).first().user_type
        if user_type ==3:
            return True
        else:
            return False

views.py中只需要导入一下即可:

from app01.utils import SVIPPermission
from rest_framework import viewsets
class AuthorModelView(viewsets.ModelViewSet):
    permission_classes = [SVIPPermission]
    queryset=Author.objects.all()
    serializer_class=AuthorModelSerializers

2.全局权限:

settings中进行配置:

REST_FRAMEWORK={
    "DEFAULT_AUTHENTICATION_CLASSES":["app01.utils.TokenAuth",],
    "DEFAULT_PERMISSION_CLASSES":["app01.utils.SVIPPermission",],

}

比如下图带上token通过了认证,token所对应的用户是超级用户,权限也通过,可以访问。

而下面的虽然通过了token的认证,但是权限是普通用户,所以不可以访问!

猜你喜欢

转载自www.cnblogs.com/geogre123/p/9749787.html