# 权限概述
低代码平台内置了基于资源的权限管理模式(RBAC),定义人/组织对某个资源的操作权限,控制用户能够访问的功能,例如菜单,页面元素等,指定其可操作的数据范围。同时基于角色的授权模式(RBAC)对角色进行授权。
权限控制,本质上就是在保护资源(例如某个实体数据),要界定一个用户能对这些资源进行什么样的操作(查看/修改)。当我们将权限访问控制分解到这种原始的层次,我们就可以用一种更细粒度更富有弹性的方式来表达权限控制策略。一个用户会有一个/多个角色,每个角色又有属于自己的权限。权限是一个比较抽象的概念,它可以表达功能模块、页面元素、数据、api等资源的可访问能力。
一般情况下,对系统进行权限控制分成以下几个步骤:
- 初始化权限数据表;
- 初始化管理员权限;
- 权限定义;
- 绑定权限;
- 角色授权;
其中步骤 1,2 在应用启动的时候会自动生成。假如没有生成管理员权限数据,根据下面的步骤进行操作。
# 数据库表
程序启动后会自动初始化以下表结构:

# 初始化管理员权限
目前管理资源权限定义、管理角色、对角色进行授权等均需要管理员权限。以下脚本用于初始化权限数据:
# 管理员初始化脚本
# 初始化资源权限【管理权限】,SCOPE为admin,若已存在id为default的数据,可合并definition_的json内容
INSERT INTO sec_authority_pack (id_,title_,definition_,desc_,tenant_id,created_at,created_by,updated_at,updated_by) VALUES
('default','默认权限集','{"authorities":[{"title":"管理权限","desc":"同SCOPE,可用于开启权限定义、角色、角色用户授权等权限","scope":"admin"}]}',NULL,'default',now(),'anonymous',now(),'anonymous');
# 初始化【系统管理员】角色
INSERT INTO sec_role (id_,name_,code_,desc_,tenant_id,created_at,created_by,updated_at,updated_by) VALUES
('CJcoBUDtMaQTpsoEmKnLk4','系统管理员','system_admin',NULL,'default',now(),'anonymous',now(),'anonymous');
# 为【系统管理员】角色授权【管理权限】
INSERT INTO sec_user_authz (id_,grantee_id,grantee_type,pack_id,grants_,tenant_id,created_at,created_by,updated_at,updated_by) VALUES
('NanyneJbWUoypWMwdDgp3F','CJcoBUDtMaQTpsoEmKnLk4','R','default','{"scopes":["admin"]}','default',now(),'anonymous',now(),'anonymous');
想要为【系统管理员】角色添加用户,可以通过下面的 SQL,也可以通过界面操作,这一步骤是可选的。
# 修改SQL中的授权用户id,将【系统管理员】角色授予该用户
INSERT INTO sec_role_user (id_,role_id,user_id,tenant_id,created_at,created_by,updated_at,updated_by) VALUES
('pizrnsZL7Stf9yJLbsCz8F','CJcoBUDtMaQTpsoEmKnLk4','!!!授权用户id!!!','default',now(),'anonymous',now(),'anonymous');
# 添加管理功能
安全模块内置了角色/用户的管理功能,如果需要可以将地址配置到导航菜单里面:
- 角色管理/授权(
system.role):http://localhost:8080/#/lowcode/system.role (opens new window) - 用户管理(
system.user):http://localhost:8080/#/lowcode/system.user (opens new window)
配置方式参考如下:
