zoukankan      html  css  js  c++  java
  • python-Web-django-路由保护

    from django.shortcuts import redirect,HttpResponse
    from app01.models import *
    import re
    
    def ddff(module):
        '''登陆控制'''
        def deco(request):
            try:
                if request.session['manage_name']:
                    return module(request)
                else:
                    return redirect("/back/login/login/")
            except KeyError:
                return redirect("/back/login/login/")
        return deco
    
    # list
    def ddff_list(module):
        '''登陆控制'''
        def deco(request):
            try:
                if request.session['manage_name']:
    
                    # 获取所有权限
                    functions = getfunctions(request)
                    # 获取url查询条件
                    function_ = geturlf(request)
                    if function_ in functions:
                        '''有权限'''
                        print('有权限')
                        return module(request)
                    else:
                        '''无权限'''
                        print('无权限')
                        return HttpResponse('<h1 align="center">无权限</h1>')
                        # return redirect("/back/login/login/")
                else:
                    return redirect("/back/login/login/")
            except KeyError:
                return redirect("/back/login/login/")
        return deco
    
    # add
    def defense_url(module):
        '''防御url'''
        def deco(request,aid=None):
            if aid != None:
                return module(request,aid)
            try:
                if request.session['manage_name']:
    
                    # 获取所有权限
                    functions = getfunctions(request)
                    # 获取url查询条件
                    function_ = geturlf(request)
                    if function_ in functions:
                        '''有权限'''
                        print('有权限')
                        return module(request,aid)
                    else:
                        '''无权限'''
                        print('无权限')
                        return HttpResponse('<h1 align="center">无权限</h1>')
                        # return redirect("/back/login/login/")
                else:
                    return redirect("/back/login/login/")
            except KeyError:
                return redirect("/back/login/login/")
        return deco
    
    def geturlf(request):
        '''url权限'''
        requesturl = request.path
        # 链接
        if re.findall('list', requesturl):
            function_ = Function.objects.filter(href_list=requesturl).first()
        elif re.findall('add', requesturl):
            function_ = Function.objects.filter(href_add=requesturl).first()
        else:
            function_ = Function.objects.filter(href_t=requesturl).first()
        return function_
    
    def getfunctions(request):
        '''权限拼接'''
        manage_id = request.session['manage_id']
        if manage_id == 1:
            # 超管
            functions = Function.objects.all()
        else:
            functions = []
            manage_id = request.session['manage_id']
            # 个人所有职位
            mp_objs = MP.objects.filter(manage_id=manage_id)
            for mp_obj in mp_objs:
                # 一个职位所有权限
                pf_objs = PF.objects.filter(position_id=mp_obj.position_id)
                # 一个职位权限id列表
                id_list = []
                for pf_obj in pf_objs:
                    id_str = (pf_obj.function).split(',')
                    for i in id_str:
                        if i not in id_list:
                            id_list.append(i)
                print(id_list)
                for i in id_list:
                    # 一个权限id对应一个权限
                    function_obj = Function.objects.filter(id=i).first()
                    if function_obj not in functions:
                        functions.append(function_obj)
                        # 一会做限制
        return functions
  • 相关阅读:
    SNMP监控一些常用OID表的总结
    微信公众号开发(三)----服务号客服消息
    微信公众号开发(二)---验证服务与回复消息
    微信公众号开发(一)-----准备工作
    leveldb文章列表
    TinyIM流程之删除好友
    TinyIM流程之添加好友
    《软件创富----共享软件创业之道》读后感
    TinyIM流程之用户注销
    TinyIM流程之用户退出登录
  • 原文地址:https://www.cnblogs.com/person1-0-1/p/11390864.html
Copyright © 2011-2022 走看看