假设已经存在函数 get_permissions可以获取当前用户的权限列表, 设计一个权限管理类,既可以作为装饰器,对一个函数授权,也可以作为上下文管理,对一段代码授权
2020-03-23 18:48
501 查看
例如
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')
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,发两张图,等完全做好了,给大家共享!
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,有兴趣的朋友可以去下载!
- 好神奇的代码,可以让匿名用户对特定SharePoint 列表拥用添加列表项的权限哦
- 假设你获取了用户输入的日期和时间如2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp——python学习笔记
- 结对编程就是两个人用同一个设计、同一个算法以及同一段代码,并且两人的角色可以随时互换;
- java项目中普遍存在的一个bug,用户直接可以通过url访问本人没有权限的页面
- 获得系统特殊路径函数SHGetSpecialFolderLocation()获取当前用户桌面
- 用字典创建一个平台的用户信息(包含用户名和密码)管理系统,新用户可以用与现有系统帐号不冲突的用户名创建帐号,已存在的老用户则可以用用户名和密码登陆重返系统。
- 小米运行时权限---代码中获取为granted,授权管理中显示为询问
- 运行时如何获取运行当前代码所在的函数,一个神奇的宏
- 权限管理页面,ajax异步刷新,获取当前用户权限-checkbox显示已选
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。
- :让一个运行在SYSTEM权限下的进程与当前用户的桌面进行交互 代码:
- 设计了一个用户权限管理模型
- 当查询一个列表的时候获取此列表id结果作为另一个sql的是否存在的条件处理
- 内存管理[5]通过 GetProcessHeaps 函数获取了当前进程的堆句柄列表
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
- Python实验室一段日志代码,获取当前调用的函数名和行号
- ASP.NET中启用Windows集成验证,怎样在调用System.DirectoryServices下的组件时传递安全上下文,也就是说当前用户凭据,来实现权限管理
- Python实验室一段日志代码,获取当前调用的函数名和行号