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