ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

rest-framework之权限组件

2022-01-19 20:31:54  阅读:174  来源: 互联网

标签:permission self get request rest framework user 组件 type


rest-framework之权限组件

一 权限简介

只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制

二 局部使用

复制代码

from rest_framework.permissions import BasePermission
class UserPermission(BasePermission):
  message = '不是超级用户,查看不了'
  def has_permission(self, request, view):
      # user_type = request.user.get_user_type_display()
      # if user_type == '超级用户':
      user_type = request.user.user_type
      print(user_type)
      if user_type == 1:
          return True
      else:
          return False
class Course(APIView):
  authentication_classes = [TokenAuth, ]
  permission_classes = [UserPermission,]

  def get(self, request):
      return HttpResponse('get')

  def post(self, request):
      return HttpResponse('post')

复制代码

局部使用只需要在视图类里加入:

permission_classes = [UserPermission,]

三 全局使用

REST_FRAMEWORK={
  "DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",],
  "DEFAULT_PERMISSION_CLASSES":["app01.service.permissions.SVIPPermission",]
}

四 源码分析

复制代码

def check_permissions(self, request):
  for permission in self.get_permissions():
      if not permission.has_permission(request, self):
          self.permission_denied(
              request, message=getattr(permission, 'message', None)
              )

复制代码

self.get_permissions()

def get_permissions(self):
    return [permission() for permission in self.permission_classes]

权限类使用顺序:先用视图类中的*权限类*,再用settings里配置的*权限类*,最后用默认的*权限类*

标签:permission,self,get,request,rest,framework,user,组件,type
来源: https://www.cnblogs.com/thaimj1314520/p/15823984.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有