Skip to main content

用户体系建设

本文主要描述用户的分类及用户使用场景。

用户分类

共工轻应用体系下,用户的体系搭建是区分平台用户终端用户区分的。平台用户拥有平台的创建应用和搭建应用权限,他是应用的创建者和维护者。 终端用户多半是用户的使用者,进来后直接使用。

组织架构

组织架构是我们用来管理和维护系统用户的,无论是外部用户,还是一个内部用户,我们这边是统一进行应用侧的角色管理的。

根据不同的用户角色来控制他不同的行为,包括 应用权限(应用列表),操作权限(创建、发布相关),数据权限等。

使用场景

编辑场景

这种情况是登录到共工平台,通常使用 “平台用户” 登录,然后编辑维护或者发布应用 根据不同的角色来管理用户的不周能力。通常情况下,编辑都是不通查看应用数据的,所以这里只和过去共工的编辑态是相等的。

终端场景

这是一个终端用户使用的的情况,他是一个普通用户,进入后,没有编辑能力,只有使用能力,打开每个 APP 就橡打开 一个个不同应用一样。 当然该类用户也有 APP 分配权限的,不同的用户对 APP 的权限是有开放的。

集成场景

集成是在一个应用发布后,以应用链接的方式来提供,三方来集成。这种情况下,需要对接三方用户或直接以指定 用户的情况下跳转进本应用中。

登录场景

关于用户登录类型的结论说明,共分为 4 种情况

  1. 免登录
  2. 关闭权限情况 ,应用访问不受控制,直接打开,应用没有用户信息的场景,后台会默认给到默认 token
  3. 平台用户登录
  4. 应用与组织架构共享用户体系 ,应用的 session 与平台保持一致。过期会自动跳转平台登录。
  5. 第三方登录
  6. 三方登录场景,三方没有 SSO,只有登录页和对应的后台登录逻辑 , 这种场景指定用户登录页,同时,通过扩展 “业务连接器” 获取三方接口验证等能力,扩展脚本实现验证。
  7. SSO 登录
  8. 支持 SSO 列表配置,这里目前支持 uc ,idaas sso 的 auth2 协议

权限体系分层

三方登录过程

开放扩展接口

自定义登陆接口

说明:自定义登陆接口

请求方式:POST

请求参数

名称上级类型必选中文名说明
usernameString用户名用户名
passwordString密码密码
uuidString验证码对应唯一标识如果要自定义自己校验验证码,可以接收此参数,是验证码的唯一标识
codeString验证码如果要自定义自己校验验证码,可以接收此参数,是用户输入的验证码结果
{
<strong>"username"</strong>:<strong>"admin"</strong>,
<strong>"password"</strong>:<strong>"1234@qweR"</strong>,
<strong>"code"</strong>:<strong>"0"</strong>,
<strong>"uuid"</strong>:<strong>"a4251f69102d482da0166d5e3efa8f02"</strong>
}

返回数据

名称上级类型必选中文名说明
statusNumber请求执行状态成功 200
messageString消息异常信息
successBoolean是否请求成功
dataObject返回数据
access_tokendataStringtoken用户登陆成功 token,如果第三方没有生成 token,可不返回,共工则会以自己规则生成一个存储;如果返回了,则使用返回的 token
expires_indataNumber失效时间token 失效时间
userIddataNumber用户 ID
usernamedataString用户名
fullNamedataString名称
phoneNumberdataString手机号
emaildataString邮件
{
<strong>"status"</strong>:<strong>200</strong>,
<strong>"message"</strong>:<strong>null</strong>,
<strong>"data"</strong>:{
<strong>"gonggongLastModifier"</strong>:<strong>1</strong>,
<strong>"fullName"</strong>:<strong>"系统管理员"</strong>,
<strong>"gonggongAppId"</strong>:<strong>2745681943545280</strong>,
<strong>"gonggongCreateTime"</strong>:<strong>"2023-11-08T15:17:22"</strong>,
<strong>"userId"</strong>:<strong>1</strong>,
<strong>"gonggongTenantId"</strong>:<strong>2745676244207040</strong>,
<strong>"gonggongLastModifiedTime"</strong>:<strong>"2023-11-12T17:13:42"</strong>,
<strong>"gonggongId"</strong>:<strong>1</strong>,
<strong>"phoneNumber"</strong>:<strong>"12300001111"</strong>,
<strong>"gonggongCreator"</strong>:<strong>1</strong>,
<strong>"name"</strong>:<strong>"admin"</strong>,
<strong>"username"</strong>:<strong>"admin"</strong>
},
<strong>"success"</strong>:<strong>true</strong>
}
特殊说明:除了接口规范中表达的字段外,其余字段,用户可根据实际情况自己决定返回,返回的信息,共工全部会存储到自己内部,方便在共工中使用。
自定义权限信息接口

请求方式:GET

请求头

名称上级类型必选中文名说明
AuthorizationString用户 token用户名
{authTag}String用户 token{authTag}为用户在共工配置的 key

请求参数

可在配置接口 url 时自行执行,可以使用 ${}占位符,参数池为【自定义登陆接口】的返回信息,如下

/external/permission?userId=${userId}

--> /external/permission?userId=1

返回数据

除了菜单信息 authMenuList,其他组织/角色/当前组织/当前角色均可不返回,试项目情况自己是否需要

名称上级类型必选中文名说明
statusNumber请求执行状态成功 200
messageString消息异常信息
successBoolean是否请求成功
dataObject返回数据
authMenuListdataObject[]菜单
resourceIdauthMenuListNumber菜单资源 ID
nameauthMenuList菜单名称
permissionPointListauthMenuListObject[]
permissionPointpermissionPointListString权限点菜单上的权限点,可以是一个按钮,或其他任何一个表示是否含有此权限的一个标识
namepermissionPointListString权限点名称
organizationListdataObject[]
idorganizationListNumber部门 ID
orgNameorganizationListString部门名称
orgCodeorganizationListString部门编号
orgPathorganizationListString部门路径
parentIdorganizationListNumber上级部门 Id
parentNameorganizationListString上级部门名称
levelorganizationListNumber层级
headIdorganizationListNumber部门负责人 Id
headNameorganizationListString部门负责人名称
roleIdsorganizationListString关联的角色 Id,用逗号隔开
roleNamesorganizationListString关联的角色名称,用逗号隔开
phoneorganizationListString电话
emailorganizationListString邮箱
remarkorganizationListString备注
roleListdataObject[]
idroleListNumber角色 id
roleCoderoleListString角色编码
roleNameroleListString角色名称
descriptionroleListString描述
statusroleListNumber角色状态1-启用 0-停用
currentOrganizationsdataObject[]当前登陆人所属的部门
idorganizationListNumber部门 ID
orgNameorganizationListString部门名称
orgCodeorganizationListString部门编号
orgPathorganizationListString部门路径
parentIdorganizationListNumber上级部门 Id
parentNameorganizationListString上级部门名称
levelorganizationListNumber层级
headIdorganizationListNumber部门负责人 Id
headNameorganizationListString部门负责人名称
roleIdsorganizationListString关联的角色 Id,用逗号隔开
roleNamesorganizationListString关联的角色名称,用逗号隔开
phoneorganizationListString电话
emailorganizationListString邮箱
remarkorganizationListString备注
currentRolesdataObject[]当前登陆人拥有的角色
idroleListNumber角色 id
roleCoderoleListString角色编码
roleNameroleListString角色名称
descriptionroleListString描述
statusroleListNumber角色状态1-启用 0-停用

说明

  • 平台用户和终端用户关系是什么?

  • 平台用户对标过老共工平台用户,即搭建应用的用户,而终端用户是访问使用应用运行时的用户。

  • 两者间是可以相互打通的,即平台用户偏运维工作,一般不会使用应用,特殊情况除外。

  • 即平台用户是终端用户的一种。

  • 需要保留 2 套用户体系吗?

    • 在工程上,业务的用户体系是复杂度远远大于平台用户,即是包含关系,我们认为可以共用一套用户体系。
  • 不同用户会看到不一样菜单与入口吗?

    • 可以的,这部分通过组织架构的角色部分,实现不同的路由主页(前端实现不同的跳转)。