开放API
上面,我们学习了如何为接口绑定角色,以及如何为用户激活角色。
假设要实现一个带有RBAC的管理后台,有如下功能:
用户管理:用户的CRUD,及角色分配
角色管理:角色CRUD,及权限分配
菜单管理:菜单的增删改查,及权限关联
表面上看,这些都是数据库层面的关联关系,用OEPRTION构建API,供前端调用即可。但只在数据库中建立关系,如角色和API的关系,并无法影响Fireboom中的接口访问状态。
因此,我们需要在建立数据库关联的同时,将关联同步到飞布存储中,如角色权限关联关系,如何变成rbac指令描述。

我们当然可以在数据库建立关联后,使用@rbac指令手动在飞布控制台逐一为API绑定角色,但实在繁琐,且容易出错。
为解决上述问题,飞布提供了开放API。
开放API,本质上是一个内置的 rest 数据源,名字叫做system,由9123端口提供服务。
它有5个接口:
获取所有角色:/api/v1/role/all
获取角色的所有接口:/api/v1/role/apis
获取所有开启的API:/api/v1/operateApi/opened
为角色绑定API:/api/v1/role/bindApi
为角色解绑API:/api/v1/role/bindApi
获取所有角色
获取Fireboom系统中存储的所有角色。
其,REST 定义:
使用方式如下:
获取角色绑定的接口
根据角色获取其绑定的接口。
其,REST 定义:
使用方式如下:
查询所有开启的接口
获取Fireboom中所有已上线的接口。为角色绑定API时,需要知道API的ID,可通过该接口获取。
其,REST 定义:
使用方式如下:
角色绑定API
该接口比较特殊,能实现两个功能:
同步角色列表到飞布中
为某个角色增量绑定API:只影响指定的API,未指定API不会发生变化
其,REST 定义:
使用方式如下:
其入参为角色roleCode,以及要绑定的api列表apis,为int数组,即接口的ID列表,对应 查询所有开启的接口的返回值 id。
此外还有一个入参是所有的角色列表allRoles。之所以这样设计是为了把数据库中的角色同步到飞布的角色列表中。和 开放API接口相反。
角色解绑API
为角色增量解绑API。
使用方式如下:
总结
总结下,实现管理后台相对比较复杂,需要自行编写业务逻辑,调用数据存储和开放API,保持两者同步。
当前,飞布提供了完整的后台管理示例,您可以参考代码实现自己的管理后台。
详情查看:Amis Admin
最后更新于
这有帮助吗?