美文网首页
rest_framework 权限

rest_framework 权限

作者: eeert2 | 来源:发表于2020-03-04 11:41 被阅读0次

    rest framework 如何实现权限

    • 1.首先需要创建权限类,可以继承 rest framework 的基础权限类,然后重写has_permission(self, request, view):方法
    from rest_framework import permissions
    
    
    class VIPPermission(permissions.BasePermission):
        message = '必须是VIP用户才能访问' # 权限不通过时,提示的 detail 信息
    
        def has_permission(self, request, view):
            """
            返回 True,表明权限通过,进行下一个权限检查
            返回 False 表明权限不通过,禁止访问资源,并提示 `message` 信息
            一个View视图类可以有多个`权限检查类`,只有所有都满足,才能访问相应资源。
            """
            user: models.UserInfo = request.user
            if user.user_type >= 2:
                return True
    
    • 2.将权限检查类进行配置,分为局部与全局

      • 1)在VIew 视图类中添加,只对当前类起作用。[这种更常用一些]
      class OrderView(APIView):
          permission_classes = [VIPPermission, ]  # 权限检查
      
          def get(self, request, *args, **kwargs):
              pass
      
      • 2) 在settings.py进行全局配置
      REST_FRAMEWORK = {
          'DEFAULT_PERMISSION_CLASSES': ['api.utils.permission.VIPPermission', ]
      }
      

    扩展:rest_framework用户认证与权限的区分

    • 用户认证的检验比权限更早进行,只有用户认证通过后才会进行权限检查。

    • 使用场景不同,用户认证是针对整个系统,验证用户是否有权限登陆。权限是针对具体的资源

    相关文章

      网友评论

          本文标题:rest_framework 权限

          本文链接:https://www.haomeiwen.com/subject/lprmlhtx.html