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

本文介绍如何使用三层装饰器实现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的,简单易实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值