权限组件
写在开头:
首先要在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的认证,但是权限是普通用户,所以不可以访问!