zoukankan      html  css  js  c++  java
  • 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内部的权限的调用

  • 相关阅读:
    install redis and used in golang on ubuntu 14.04
    在ionic项目中使用极光推送实现推送 & 服务器端代码
    安装go 1.5 & 部署
    python 简单计算器
    双指针算法
    python set()去重的底层原理
    python实现单例模式总结
    __str__和__repr的区别
    python反射详解
    python isinstance和issubclass区别
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11650516.html
Copyright © 2011-2022 走看看