1 from django.utils.deprecation import MiddlewareMixin 2 from django.shortcuts import redirect, HttpResponse 3 import re 4 class RbacMiddleware(MiddlewareMixin): 5 6 def process_request(self, request): 7 8 # 获取访问的url 9 current_url = request.path_info 10 11 # 白名单 12 valid_url = [‘^/login/$‘, ‘^/admin/.*‘] 13 for item in valid_url: 14 if re.match(item, current_url): 15 return 16 17 # 是否登入 18 permission_list = request.session.get(‘permission_list‘) 19 if not permission_list: 20 return redirect(‘/login/‘) 21 22 # 是否有权限访问 23 flag = False 24 for item in permission_list: 25 reg = ‘^%s$‘ % item.get(‘permission__url‘) 26 if re.match(reg, current_url): 27 flag = True 28 break 29 if not flag: 30 return HttpResponse(‘无权访问‘)