假设已经存在函数 get_permissions可以获取当前用户的权限列表

题意:
假设已经存在函数 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‘)

原文地址:https://blog.51cto.com/14730644/2475529

时间: 2024-11-10 11:20:58

假设已经存在函数 get_permissions可以获取当前用户的权限列表的相关文章

[sharepoint]根据用户名获取该用户的权限

写在前面 这样的一个场景,客户端请求sharepoint的rest api,但不允许传输用户的密码,使用的是证书认证的方式,但这样所有的用户用的是同一个证书,这样造成的结果就是无法识别该用户是否有操作,及查询的权限.这里是实际项目中遇到的一个问题.将解决方案,记录一下. 解决方案 try { ClientContext spContext = new ClientContext("http://xxxx/xxx/xxx"); spContext.ExecutingWebRequest

[转载]Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

原文地址:点击打开链接 为什么要写这篇文章 1.      因为最近在学习<软件调试>这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了KiFastCallEntry这个函数. 2.      碰巧前天又在网上看到了一篇老文章介绍xxx安全卫士对Windows系统调用的Hook,主要就是Hook到这个函数 3.      刚刚做完毕业设计,对使用中断来实现系统调用的方式记忆犹新. 以上原因导致我最近眼前总是出现系统调用这

函数参数的获取:嵌入汇编的方法

函数参数的获取:嵌入汇编的方法 通常我们能够想到的函数参数有两种,一种是显示的定长参数,还有就是变长,这两种方式都有各自的捞取参数的方法,但是如果是定长参数却没有参数名该怎么办呢,这节我们就是要讨论一下这个问题,这个尽管在大多数情况下使用不上,但是有时候还是大有用武之地,改文也是为: 深入探讨this指针:从汇编的角度考虑做铺垫的. 该文测试环境:VS2010 (win7)  其他平台实现可能会不一样(汇编吗,毕竟不兼容) 案例: 有函数void  show(int*,char*),且参数没有名

jquery 获取一组元素的选中项 - 函数、jquery获取复选框值、jquery获取单选按钮值

做表单提交时,如果现在还在用form提交,用户体验很差,所以一般使用ajax提交. 其中需要获取每个表单输入元素的值,获取的时候像文本框这些还好说,Jquery提供了 .val() 方法,获取很方便,但是获取复选框和单选按钮的值确比较麻烦. 今天闲来无事封装了一个函数,以后获取复选框和单选按钮的值就只需要调用这个函数,传入jquery选择器就可以了,下面附上函数. 函数 /** * 获取单个或一组输入元素的选中项 * 传入Jquery选择器 * 支持:text,返回:文本 * 支持:hidden

Python(63)_写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其返回

`#-*-coding:utf-8-*- ''' 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其返回 ''' def func(l): return l[1::2] print(func([1,2,3,4,5,7])) 原文地址:https://www.cnblogs.com/sunnybowen/p/10257583.html

Windows Store App JavaScript 开发:获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括documentsLibrary(文档库).musicLibrary(音乐库)和videosLibrary(视频库)等.获取到用户库之后,就可以使用KnownFolders类中的getItemsAsync.getFilesAsync或getFoldersAsync函

Win10系列:JavaScript获取文件和文件夹列表

在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolders类的相应属性来实现,可用属性包括documentsLibrary(文档库).musicLibrary(音乐库)和videosLibrary(视频库)等.获取到用户库之后,就可以使用KnownFolders类中的getItemsAsync.getFilesAsync或getFoldersAsync函

Python获取豆瓣用户读过的书

好久好久不写博客了,最近也光顾着玩了,前几天跟导师联系了一下毕设的事,要再爬点东西,想了想,就拿豆瓣图书练练手,爬一下某个用户读过的书(当然也可以好多用户或者其他信息),由于豆瓣提供了API,所以首先想到用API,图书API地址:https://developers.douban.com/wiki/?title=book_v2,看了看,好像没有获取用户读过的书之类的,擦亮眼再看看,有一个获取某用户所有图书收藏信息,那这个到底是不是呢,试一下就知道了. 那个接口里有个参数status,表示收藏状态

用百度直达号获取新用户 让顾客直达商家服务

直达号是什么? 直达号,商家在百度移动平台的官方服务账号.基于移动搜索.@账号.地图.个性化推荐等多种方式,让顾客随时随地直达商家服务. 直达号其实就是两个功能: √ 提供一个手机网站模板,入住商家可以建自己的手机网站. √ 提供一个访问的方式.在手机百度上直接输入@***,就能直达这个网站. 直达号开放平台 直达号具备“广拉新.高转化.强留存.易开通”等四大优势,能够有效解决商家“获取新用户.留住老用户.提升服务体验”等难题. 在获取新用户方面,用户可以通过搜索@商家账号直接使用服务,手机百度