django-rest-framework权限验证

django-rest-framework权限验证

在项目根目录下新建utils的文件

  • 新建permissions.py
    from rest_framework.permissions import BasePermission
    
    
    class MyPermission(BasePermission):
      
        message = '必须用户id为1的人才能访问'
  
        def has_permission(self, request, view):
            if request.user.id != 1:
                return False
            return True
  • 自定义的权限验证类必须继承BasePermission, 且实现has_permission的成员方法
  • 返回为False表示不通过验证
  • 定义类变量message可以实现自定义错误信息返回

内置的权限验证类

  • AllowAny: 无限制
  • IsAuthenticated: 登陆用户开放
  • IsAdminUser: 只有is_staff为True的用户才开放
  • IsAuthenticatedOrReadOnly: 登陆的用户无限制,未登录的用户只读

使用内置的权限

class PermissionRequired(BasePermission):

    def has_permission(self, request, view):
        user = request.user
        perms = view.perms if view.perms else []
        if user.has_perms(perms):
            return True
        return False


class Index(views.APIView):
    permission_classes = [PermissionRequired]
    perms = ['student.add_role']

    def get(self, request):
        return Response('66')

调用内部的权限校验,通过view对象拿到所需的参数,就可以完成对django内部的权限的调用

posted @ 2019-10-10 20:51  Ivy丶  阅读(280)  评论(0)    收藏  举报