• DRF-自定义权限


    rest_framework自带的权限

    • 引入
    from rest_framework import permissions
    
    • permissions.AllowAny
      • 允许所有人访问
    • permissions.IsAuthenticated
      • 仅允许登录的人员访问
      • 判断条件是request.user and request.user.is_authenticated
    • permissions.IsAdminUser
      • 仅允许管理员访问
      • 判断条件是request.user and request.user.is_staff
    • permissions.IsAuthenticatedOrReadOnly
      • 是登录的用户,并且这个API是只能读的(也就是GET、OPTIONS、HEAD)

    自定义权限

    • 条件
      有时候drf自带的权限无法满足要求,那么我们可以自定义权限。自定义权限要遵循两个条件:
      1、继承自permissions.BasePermission
      2、 现has_permission(self,request,view)或者是has_object_permission(self, request, view, obj)方法。第一个方法用管理整个视图的访问权限,第二个方法可以用来管理某个对象的访问权限(比如只能修改自己的用户信息)
    • 示例
    from rest_framework import permissions
    class IsOwnerOrReadOnly(permissions.BasePermission):
        # 只允许查看用户自己创建的数据
        def has_object_permission(self, request, view, obj):
            if request.method in permissions.SAFE_METHODS:
                return True
            return obj.owner == request.user
    
    from rest_framework import permissions
    class ShowPagePermissions(permissions.BasePermission):
        def has_permission(slef,request,view):
            if request.user.has_perm('app名.权限标识'):
                return true
            else:
                return flase
    
  • 相关阅读:
    elasticsearch-head插件基本使用
    Windows包管理工具-Chocolatey
    php-fpm常用操作
    nginx之日志处理
    进程管理工具之supervisor(完整版)
    Elasticsearch之常见问题
    支付宝支付功能接入(PC)
    UnityWebRequest 高级API常用的操作
    UnityWebRequest
    logback中使用日期做为文件目录
  • 原文地址:https://www.cnblogs.com/xshan/p/14222724.html
Copyright © 2020-2023  润新知