Django-rest-framework框架之RBAC-基于角色的访问控制,Casbin权限控制,后台管理simplui的介绍和使用

今日内容概要

  • 排序和过滤源码分析
  • 基于jwt的认证类
  • RBAC的介绍和使用
  • Casbin权限控制
  • 后台管理simplui的介绍和使用

排序和过滤源码分析

  • 继承了GenericAPIView+ListModelMixin,只要在视图类中配置filter_backends它就能实现过滤和排序。
    drf内置的过滤类(SearchFilter),排序类(OrderingFiler)
    django-filter
    自定义:写一个类,继承BaseFilterBackend,重写filter_queryset,返回的qs对象,就是过滤或排序后的。
  • 只有获取所有才涉及到排序
    list方法:
   def list(self, request, *args, **kwargs):
   # self.get_queryset()所有数据,经过了self.filter_queryset返回了qs
   # self.filter_queryset完成的过滤
       queryset = self.filter_queryset(self.get_queryset())
			# 如果有分页,走的是分页----》视图类中配置了分页类
       page = self.paginate_queryset(queryset)
       if page is not None:
           serializer = self.get_serializer(page, many=True)
           return self.get_paginated_response(serializer.data)
		  # 如果没有分页,走正常的序列化,返回
       serializer = self.get_serializer(queryset, many=True)
       return Response(serializer.data)
  • self.filter_queryset完成了过滤,当前在视图类中,self是视图类的对象,去视图类中找没找到,去父类中可以找到—》GenericAPIView—》filter_queryset
def filter_queryset(self, queryset):

   for backend in list(self.filter_backends):
       queryset = backend().filter_queryset(self.request, queryset, self)
   return queryset
  • 总结:
    (1)写的过滤类要重写filter_queryset,返回qs(过滤或排序后)对象;
    (2)后期如果不写过滤类,只要在视图类中重写filter_queryset,在里面实现过滤也可以。

基于jwt的认证类

代码展示:

from rest_framework.authentication import BaseAuthentication
import jwt
from rest_framework.exceptions import AuthenticationFailed
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from rest_framework_jwt.settings import api_settings
from .models import UserInfo

jwt_decode_handler = api_settings.JWT_DECODE_HANDLER

class JWTAuthication(BaseAuthentication):
   def authenticate(self, request):
       # 放到头中:token
       print(request.META)
       jwt_value=request.META.get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值