用户集成是系统集成中最常见的要求之一。当有多套系统同时使用时,客户往往希望统一进行用户管理、统一登录认证,也就是说只在一个系统中维护基础用户信息、只登录一次(单点登录)就可以访问不同系统的内容。用户集成包含两个方面内容:
注意事项:Smartbi 还有角色概念,无论哪种集成方式,都要求在 Smartbi “管理 > 用户管理”模块中创建角色,并设置角色的操作权限和数据权限;用户必须被赋予角色,才能登录 Smartbi 并使用相应的功能。
相关文档: |
说明:
可以通过存储过程或 ETL 定时将第三方系统的用户信息同步到 Smartbi 知识库相关的用户表中。同步数据库时涉及到的表如下:
数据表 | 含义说明 |
---|---|
用户组表,记录用户组(机构)的信息。 | |
用户表,记录所有用户信息。 | |
用户组与用户对应表。相关字段:t_user.c_userid、t_group. c_groupid | |
角色表,记录系统所有角色的信息。相关字段:t_group. c_groupid | |
用户组与角色对应关系表。相关字段:t_role.c_roleid、t_group. c_groupid | |
用户与角色对应关系表。相关字段:t_role.c_roleid、t_user. c_userid | |
操作权限表。 | |
角色与操作权限关系表。相关字段:t_role.c_roleid、t_funclist. c_funcid |
字段类型:
下文表结构中的字段类型等信息,均是针对 MySQL 5.0 而言,其它数据库类型的对应关系如下表所示:
数据库类型 | MySQL | Oracle | DB2 |
---|---|---|---|
字符串 | VARCHAR | VARCHAR2 | VARCHAR |
整数 | INTEGER | INTEGER | INTEGER |
浮点数 | DOUBLE | DOUBLE | DOUBLE |
日期时间 | DATETIME | DATE | DATE |
长文本 | LONGTEXT | CLOB | CLOB |
注意事项:
t_group 用户组表,记录用户组的信息。通过字段c_orgid,实现用户与机构的关联。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_groupid | 组ID | VARCHAR(255) | NOT NULL |
c_pgroupid | 父组ID | VARCHAR(255) | default NULL |
c_groupname | 组名称 | VARCHAR(255) | default NULL |
c_groupalias | 组别名 | VARCHAR(255) | default NULL |
c_groupdesc | 描述 | VARCHAR(255) | default NULL |
c_orgid | 机构编号 | VARCHAR(255) | default NULL |
t_user 用户表,记录所有用户信息。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_userid | 用户ID | VARCHAR(255) | NOT NULL |
c_username | 用户名称 | VARCHAR(255) | default NULL |
c_useralias | 用户别名 | VARCHAR(255) | default NULL |
c_userpwd | 用户密码 | VARCHAR(255) | default NULL |
c_userdesc | 描述 | VARCHAR(255) | default NULL |
c_isenabled | 用户是否启用 | VARCHAR(255) | default NULL |
c_extended | 用户扩展信息 | LONGTEXT | default NULL |
c_defaultgrp | 默认组 | VARCHAR(255) | default NULL |
备注:c_defaultgrp 在新版本中该字段已被弃用。 |
t_group_user 用户组与用户对应表。相关字段:t_user.c_userid、t_group. c_groupid。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_id | ID | VARCHAR(255) | NOT NULL |
c_userid | 用户ID | VARCHAR(255) | default NULL |
c_groupid | 组编号 | VARCHAR(255) | default NULL |
c_isdefault | 是否默认组 | INTEGER | default NULL |
t_role 角色表,记录系统所有角色的信息。相关字段:t_group. c_groupid。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_roleid | 角色ID | VARCHAR(255) | NOT NULL |
c_rolename | 角色名称 | VARCHAR(255) | default NULL |
c_rolealias | 角色别名 | VARCHAR(255) | default NULL |
c_groupid | 组ID | VARCHAR(255) | default NULL |
c_roledesc | 描述 | VARCHAR(255) | default NULL |
c_sysid | 应用系统ID | VARCHAR(255) | default NULL |
t_group_role 用户组与角色对应表。相关字段:t_role.c_roleid、t_group. c_groupid。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_id | ID | VARCHAR(255) | NOT NULL |
c_roleid | 角色ID | VARCHAR(255) | default NULL |
c_groupid | 组ID | VARCHAR(255) | default NULL |
c_isdescend | 是否子孙用 | INTEGER | default NULL |
t_user_role 用户与角色对应表。相关字段:t_role.c_roleid、t_user. c_userid。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_roleid | 角色ID | VARCHAR(255) | default NULL |
c_userid | 用户ID | VARCHAR(255) | default NULL |
t_funclist 操作权限表。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_funcid | 功能ID | VARCHAR(255) | PK |
c_funcname | 功能中文名 | VARCHAR(255) | default NULL |
c_funcalias | 功能别名 | VARCHAR(255) | default NULL |
c_funcdesc | 功能描述 | VARCHAR(255) | default NULL |
c_sysid | 所属系统ID | VARCHAR(255) | default NULL |
c_pfuncid | 父功能ID | VARCHAR(255) | default NULL |
c_isbuiltin | 是否内置操作权限,"1"为是。 | VARCHAR(255) | default NULL |
t_role_func 角色与操作权限关系表。相关字段:t_role.c_roleid、t_funclist. c_funcid。
字段名 | 中文含义 | 数据类型 | 约束 |
---|---|---|---|
c_roleid | 角色编号 | VARCHAR(255) | default NULL |
c_funcid | 功能编号 | VARCHAR(255) | default NULL |
说明:
Smartbi 提供 Java 和 JavaScript 两种 API 供外部系统调用实现用户信息同步。
1、服务器端SDK同步用户
2、浏览器端SDK同步用户
实现步骤:
1、当在第三方系统进行增删用户/用户组等操作时,后台程序调用 Smartbi 提供的 API 接口同步将用户信息同步到 Smartbi 系统中。
2、调用方法请参考开发接口中 服务器端SDK 和 浏览器端SDK 中的操作步骤。
3、演示图的源码请参考 服务器端SDK同步用户.rar 和 浏览器端SDK同步用户.rar
系统方法:
系统提供的用户管理方法示例如下。
方法名 | 作用 |
---|---|
createDepartment(parentGroupId, groupName, groupAlias, desc, departmentCode) | 创建用户组。 |
createRole(roleName, roleAlias, desc, groupId) | 创建角色。 |
createUser(parentGroupId, userName, userAlias, desc, password, isEnabled) | 创建用户。 |
deleteDepartment(groupId) | 删除用户组。 |
deleteRole(roleId) | 删除角色。 |
deleteUser(userId) | 删除用户。 |
getCurrentUser() | 获取当前登录用户信息。 |
getDefaultDepartment(userId,hierId) | 获取用户的默认组,hierId为"DEPARTMENT"。 |
getDepartmentById(id) | 通过用户组ID获取用户组信息。 |
getDepartmentByName(name) | 通过名称获取用户组对象。 |
updateDepartment(groupId, groupAlias, desc, departmentCode) | 修改用户组。 |
updateRole(roleId, roleAlias, desc) | 修改角色。 |
updateUser(userId, alias, desc, password, isEnabled) | 修改用户。 |
assignDepartmentsToRole(roleId, groupIdList) | 给角色分配用户组。 |
assignDepartmentsToUser(userId, groupIdList) | 修改用户的所属组。 |
assignRolesToDepartment(groupId, roleForGroupList) | 分配角色给用户组。 |
assignRolesToUser(userId, roleIdList) | 给用户分配角色。 |
assignUsersToGroup(groupId, userIdList) | 修改组所拥有的用户。 |
assignUsersToRole(roleId, userIdList) | 给角色分配用户。 |
更多具体方法以及帮助请参考 JAVA API文档 | Java API 帮助文档。 |
说明:
Smartbi 提供导入EXCEL信息实现用户信息同步功能。
实现步骤:
1、登录Smartbi,参考 导入用户信息。
下面对模版文件进行详细说明:该文件有三个sheet页,分别为:用户、组、角色,以下分别从用户、组、角色三方面介绍导入信息该如何填写。
(1) 用户,格式如下:
(2) 用户组,格式如下:
(3)角色,格式如下: