利用三层装饰器实现Django的权限控制

  如题,利用三层装饰器可以实现Django的权限控制,代码如下:


def require_role(role='user'):
    """
    可定义三个级别的管理员权限: ["super", "admin", "user"]
    """
    def _deco(func):
        def __deco(request, *args, **kwargs):
            if not request.user.is_authenticated(): #调用Django封装的User验证方法,如果没验证则返回登录接口。
                return HttpResponseRedirect(reverse('login'))
            if role == 'admin': #进行权限判断,如果不是管理员,则表明无此权限,返回主页
                if request.user.role == 'CU': 
                    return HttpResponseRedirect(reverse('index'))
            elif role == 'super': #同上
                if request.user.role in ['CU', 'GA']:
                    return HttpResponseRedirect(reverse('index'))
            return func(request, *args, **kwargs)
        return __deco
    return _deco

总结

  Django因为本身就有admin的管理后台,在实现权限管理这块非常方便,不过有时也需要用装饰器来实现,并且该三层装饰器用于实现flask的权限控制也是ok的,简单易实现。

你可能感兴趣的:(Django,Python,Django,装饰器,权限控制)