数据授权功能

该组件提供数据授权过滤功能,可以通过简单整合快速构建具备授权管理功能。

授权功能接入

前端整合

打开对话框,传递两个参数,进行配置授权资源

  • rightsObject: 授权对象
  • rightsTarget: 授权对象的ID
function commonAuthorization(id) {
var title = "面板授权";
var url="${ctx}/sys/authorization/authorizationDialog?rightsTarget="+id+"&rightsObject=WORKBENCH";
HT.window.openEdit(url, title, 'Edit', 'grid', 800, 600, null, null, id, false);
}

前端如此配置就OK了。

后端整合

  1. 添加枚举变量,该变量必须添加,在后端获取授权过滤sql时使用
public enum RightsObjectConstants {
WORKBENCH("WORKBENCH","工作台"),
NAME("NAME","要添加的模块描述");
  1. 在需要过滤的列表查询出添加获取授权的参数
  • RightsObjectConstants.WORKBENCH: 为授权模块
  • userId: 为用户id
  • null :默认为id 为objectTarget授权目标的字段key
Map<String, Object> userPermission = sysAuthorizationManager.getUserRightsSql(RightsObjectConstants.WORKBENCH,userId,null);
  1. 修改mapper文件

rightsSql 便是userPermission内部的一个参数

SELECT panel.* FROM sys_workbench_panel panel ${rightsSql}

至此完成了数据权限过滤的功能

复杂场景的支持

Map<String, Object> userPermission 参数介绍

  • rightsSql :若查询语句简单可直接在sql中添加 ${rightsSql} 即可如上3所示

    INNER JOIN sys_authorization rights ON id_ = rights.rights_id_ where rights_permission_code_ in ( id-type,groupid-type )
  • rights : 权限的数组,当前用户的可授权信息 eg:分公司、组织、角色、岗位等

    set<String> : ["id-user","id-role","id-org"] ...

当复杂sql场景下可以自行使用rights信息,关联sys_authorization表进行数据过滤

授权表结构

CREATE TABLE `sys_authorization` (
`rights_id_` varchar(64) NOT NULL COMMENT 'id',
`rights_object_` varchar(64) NOT NULL COMMENT '授权对象表分区用',
`rights_target_` varchar(64) NOT NULL COMMENT '授权目标ID',
`rights_type_` varchar(64) NOT NULL COMMENT '权限类型',
`rights_identity_` varchar(64) NOT NULL COMMENT '授权标识',
`rights_identity_name_` varchar(255) NOT NULL COMMENT '标识名字',
`rights_permission_code_` varchar(125) NOT NULL COMMENT '授权code=identity+type',
`rights_create_time_` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`rights_create_by_` varchar(64) NOT NULL COMMENT '创建人',
PRIMARY KEY (`rights_id_`),
KEY `idx_permission_code_` (`rights_permission_code_`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='通用资源授权配置';