• REST-framework快速构建API--权限


    我们在访问资源时,有些资源保密程度较高,需要特殊的人员才能访问。比如,获取公司的每日收入流水的API接口,只能CEO才能查看。 

    这时,我们就需要将资源设定权限了。

    REST-framework实现如下:

    一、权限级别定义

    我们规定用户类型为三种:

    • 普通用户
    • 管理员
    • 超级管理员
    class User(models.Model):
        name = models.CharField(max_length=32)
        pwd = models.CharField(max_length=32)
        type_choices = ((1, "普通用户"), (2, "管理员"), (3, "超级管理员"))
        user_type = models.IntegerField(choices=type_choices, default=1)
    

      其中,超级管理员可以查看公司每日收入流水。

    二、权限控制

    from rest_framework.permissions import BasePermission
    class SVIPPermission(BasePermission):
        message="超级管理员才能访问!"
        def has_permission(self, request, view):
            user = User.objects.filter(name=request.user).first()
            if user.user_type==3:
                return True
            return False
    

      

    三、权限应用

    局部应用

    class BookModelView(viewsets.ModelViewSet):
        authentication_classes = [TokenAuth,]
        permission_classes = [SVIPPermission,]
        queryset = Book.objects.all()
        serializer_class = BookModelSerializers
    

      

    人员权限:

     人员对应的token:

    访问测试如下:

    普通用户访问Books资源:

    超级管理员访问资源:

    全局应用

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

      

  • 相关阅读:
    常见问题汇总
    python的正则表达式
    Python 程序读取外部文件、网页的编码与JSON格式的转化
    第三方仓库PyPI
    文件名称一定不要设置为某些模块名称,会引起冲突!
    迟来的博客
    FENLIQI
    fenye
    Notif
    phpv6_css
  • 原文地址:https://www.cnblogs.com/skyflask/p/10404424.html
Copyright © 2020-2023  润新知