zoukankan      html  css  js  c++  java
  • 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的认证,但是权限是普通用户,所以不可以访问!

  • 相关阅读:
    MVC中使用jquery的浏览器缓存问题
    3 工厂方法模式
    2 简单工厂模式
    1 单例模式
    Sqlserver With as
    Memcache的使用
    mysql的分区和分表
    MySQL主从复制与读写分离
    SqlServer 表分区
    SqlServer 2012 AlwaysOn
  • 原文地址:https://www.cnblogs.com/geogre123/p/9749787.html
Copyright © 2011-2022 走看看