欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

superset详解(四)--权限分类

程序员文章站 2024-02-13 16:56:46
...

superset的权限基本上可以分为3类,菜单类,基本权限,资源类。superset在为角色添加权限的时候,添加的不是基本的权限而是权限和视图的组合。比如我想访问报表功能,视图是slicemodelview,权限是menu_access,需要把它们的组合 menu access on slicemodelview添加到我的角色当中。

菜单类

flaskappbuilder 自己定义的控制菜单的权限

menu_access 
基本权限

基本权限有很多,类中的所有的加了@has_access| @has_access_api装饰器的方法都会生成基本权限

can_list can_add  can_csv   can_xlsx  can_edit    can_explore_json   can_sql_json

PERMISSION_PREFIX = 'can_'
def has_access(f):
    if hasattr(f, '_permission_name'):
        permission_str = f._permission_name
    else:
        permission_str = f.__name__
    def wraps(self, *args, **kwargs):
        permission_str = PERMISSION_PREFIX + f._permission_name  # 生成权限
        if self.appbuilder.sm.has_access(permission_str, self.__class__.__name__):
            return f(self, *args, **kwargs)
        else:
           pass
    f._permission_name = permission_str
    return functools.update_wrapper(wraps, f)

权限有2部分组成,前缀’can_'和函数的名字

资源权限

flaskappbuilder 自己定义的控制菜单的权限

all_database_access      # 所有的数据库权限
all_datasource_access    # 所有的表的权限
database_access
datasource_access
schema_access
metric_access