开放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,保持两者同步。

开放API 开放API两个接口为变更操作,执行后需手动触发编译后,Fireboom中才能生效。

当前,飞布提供了完整的后台管理示例,您可以参考代码实现自己的管理后台。

详情查看:Amis Admin

最后更新于

这有帮助吗?