前后端分离
与API路由
权限
CabloyJS是前后端分离
的框架。前后端分离对后端API路由
的权限控制
提出了更高的要求。因此,权限的核心就是对后端API路由
的权限控制
资源
与API路由
的关系
API路由
的目的是向前端提供相应的API服务,在这里我们称之为资源
。于是,一个或多个API路由
对应一个资源
在实际操作中,是针对资源
授权,然后在API路由
中指定此路由对应哪个资源
,从而实现对API路由
的访问控制
如,资源标签管理
,包含以下一组API路由
a-baseadmin/backend/src/routes.js
- 1 {
- 2 method: 'post',
- 3 path: 'tag/add',
- 4 controller: 'tag',
- 5 meta: { right: { type: 'resource', module: 'a-settings', name: 'settings' } },
- 6 },
- 7 {
- 8 method: 'post',
- 9 path: 'tag/save',
- 10 controller: 'tag',
- 11 meta: { right: { type: 'resource', module: 'a-settings', name: 'settings' } },
- 12 },
- 13 {
- 14 method: 'post',
- 15 path: 'tag/delete',
- 16 controller: 'tag',
- 17 meta: { right: { type: 'resource', module: 'a-settings', name: 'settings' } },
- 18 }
广义的资源
:资源
概念的延伸
从狭义上来看,资源
主要管理API路由
和菜单
但从广义上看,资源
还可以管理各种可授权对象
,比如,PC布局中的边栏面板
和头部按钮
,仪表板中的部件
,等等。将其作为资源管理,就可以通过资源授权
控制不同的角色使用不同的资源
资源
与原子
的关系
由于原子
本身具备大量基础特性,CabloyJS 4.0基于原子
实现了一个原子类型:资源
,使得资源
既便于使用,也便于扩展
src/module-system/a-base-sync/backend/src/meta.js
- 1const meta = {
- 2 base: {
- 3 atoms: {
- 4 resource: {
- 5 info: {
- 6 bean: 'resource',
- 7 title: 'Resource',
- 8 tableName: 'aResource',
- 9 tableNameModes: {
- 10 },
- 11 category: true,
- 12 tag: true,
- 13 },
- 14 },
- 15 },
- 16 },
- 17};
资源
的特点
由于资源
本身就就是原子
,因此具备以下特点
- 支持排序:可调整资源的显示次序
- 支持目录:目录可调整显示次序、可设置隐藏目录
- 支持标签
- 支持静态原子:可提供内置资源,并提供初始授权,可实现版本控制
- 任何业务模块均可提供自己的
资源类型
,自动纳入资源的统一管理架构
评论: