功能权限设计
采用 RBAC 模型, 使用用户、角色、菜单控制用户可以使用的功能菜单。 RBAC 即权限不直接赋予用户,而是赋予角色,用户可以被分配一个或多个角色。角色可以有一个或多个权限。用户通过被赋予角色而获得角色的权限。
系统支持多租户,租户是一个组织,可以添加子用户,并管理这个组织的相关设置。通过系统注册功能注册的用户,是一个租户; admin 账号添加的用户,也是一个租户。
数据权限设计
对于一个 IOT 平台,其主要管理的数据是设备以及设备产生的各种数据,比如设备信息、设备上报数据、告警、告警配置、告警通知、设备转发数据等
系统采用分组(组织机构)概念对设备以及设备产生的数据进行管理。一个设备属于只能属于一个分组,一个分组可以属于多个用户。比如 A 用户拥有分组 B, C、D 设备属于分组 B, 则用户 A 拥有 C、D设备的数据权限,可以管理设备和设备产生的数据。 如果用户不具备设备的数据权限,则无法管理设备。
对于规则引擎、数据转发、通知配置中的规则、模板等数据,不采用分组进行数据权限管理,其采用的方式是用户创建的数据用户自己管理,租户可以管理其下所有用户的数据。
HTTP API 权限设计
API 是提供给第三方应用使用的 HTTP API,比如获取设备信息、查询设备历史数据等。 系统采用 “应用” 的概念管理 API 权限。 “应用” 是一组 API 的集合,只有租户可以创建 “应用”,一个租户可以创建多个应用 “应用” ,并给 "应用" 分配 具体的 API。
第三方应用使用 “应用” token 即可以使用 API。只有在平台上分配给应用的 API, 才能使用应用对应的 token 访问。API 的数据权限是 “应用” 的所属用户的数据权限一致。
如何调用 API 接口,请查看 “进阶使用” 章节的 “使用API接口”
消息总线设计
采用自研消息总线,非常轻量、性能强大,安全性高。