从品牌网站建设到网络营销策划,从策略到执行的一站式服务
题意:
假设已经存在函数 get_permissions可以获取当前用户的权限列表, 设计一个权限管理类,既可以作为装饰器,对一个函数授权,也可以作为上下文管理,对一段代码授权
例如
permissions = get_permissions()
if 'admin' in permissions:
## do somthings
else:
raise Exception('Permissions denied')
分析:
权限检查的一般都是用装饰器的方法实现
demo:
def get_permissions():
return "root"
class Requrie:
def __init__(self,permissions):
self.permissions = permissions
def check(self):
if len(set(self.permissions).intersection(get_permissions())) <= 0:
raise Exception('Permissions denied')
def __call__(self,fn):
@wraps(fn)
def wrap(*args, **kwargs):
self.check()
return fn(*args, **kwargs)
return wrap
def __enter__(self):
self.check()
def __exit__(self, *args, **kwargs):
pass
def __get__(self, instance, cls): # 类作为装饰器,一定要这样用
type.MethodType(self, instance)
@Requrie({"admin", 'root'})
def reboot():
pass
def kill():
print("i will kill something")
with Requrie("root"):
print('kill')
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图