基于django rest framework进行权限验证

1.自带的权限验证

系统自带权限认证类:
1) AllowAny: 允许所有用户,校验方法直接返回True
2) IsAuthenticated: 只允许登陆用户访问 reqest.user and request.user.is_authenticated
3) IsAuthenticatedOrReadOnly: 游客只读,登陆用户无限制 get、option、head请求无限制
4) IsAdminUser: 是否是后台用户 校验request.user和request.user.is_staff(可以登陆后台管理系统的用户)
5) 以上4个类都可以通过from rest_framework.permission import 导出来点进去看源码的权限规制

2.自定义权限验证

继承BasePermission类 重写has_permission方法

  1. from rest_framework.permission import BasePermission
  2. class IsAdminUser(BasePermission):
  3. def has_permission(self, request, view):
  4. user = request.user
  5. if not user:
  6. return False
  7. # 查询用户在group表中所在的组是否为1
  8. if user.group.filter(group_id=1):
  9. return True
  10. return False

在settings中配置

  1. REST_FRAMEWORK = {
  2. 'DEFAULT_PERMISSION_CLASSES': [
  3. # 系统的权限规则
  4. 'rest_framework.permissions.IsAuthenticatedOrReadOnly',
  5. # 自定义的权限规则
  6. 'utils.permissions.IsAdminUser'
  7. }

view中配置

  1. from utils.permissions import IsAdminUser
  2. from rest_framework.view improt APIView
  3. from rest_framework.response import Response
  4. class TestView(APIView):
  5. permission_classes = [IsAdminUser]
  6. def post(self, request, *args, **kwargs):
  7. return Response('success')