美文网首页
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