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