NocoBase v1.6.0 正式版发布

原文链接:NocoBase v1.6.0 正式版发布 - NocoBase

新特性

集群模式

企业版可通过相关插件支持集群模式部署,应用以集群模式运行时,可以通过多个实例和使用多核模式来提高应用的对并发访问处理的性能。

参考文档:集群部署

密码策略

为所有用户设置密码规则,密码有效期和密码登录安全策略,管理锁定用户。

参考文档:密码策略和用户锁定

Token 安全策略

Token 安全策略是一种用于保护系统安全和体验的功能配置。它包括了三个主要配置项:"会话有效期"、"Token 有效周期" 和 "过期 Token 刷新时限" 。

参考文档:Token 安全策略

IP 限制

NocoBase 支持管理员对用户访问 IP 设置白名单或黑名单,以限制未授权的外部网络连接或阻止已知的恶意 IP 地址,降低安全风险。同时支持管理员查询访问拒绝日志,识别风险 IP。

参考文档:IP 限制

变量和密钥

集中配置和管理环境变量和密钥,用于敏感数据存储、配置数据重用、环境配置隔离等。

参考文档:变量和密钥

迁移管理

用于将应用配置从一个应用环境迁移到另一个应用环境。

参考文档:

路由管理

  • 菜单数据独立并改名为路由 :菜单数据从 UI Schema 中拆分出来,改名为路由 ,分为 desktopRoutesmobileRoutes 两张表,分别对应桌面端路由和移动端路由。
  • 菜单前端优化,支持折叠与响应式 :菜单在前端实现了折叠响应式适配,提升了使用体验。

参考文档:路由管理

角色和权限

  • 支持配置更多的操作按钮权限,包括弹窗、链接、扫码、触发工作流

  • 支持配置标签页权限

用户管理

支持配置用户个人资料表单

工作流

在全局工具栏中增加流程待办中心入口,并实时提示人工节点、审批的相关待办任务数量。

工作流:自定义操作事件

支持全局和批量数据触发自定义操作事件。

工作流:审批

  • 支持转签、加签。
  • 支持审批人在提交审批时修改申请内容。
  • 支持在审批界面中配置审批基础信息区块。
  • 优化审批发起和待办区块的样式和交互,同时也在全局的流程待办中心中内置。
  • 不再区分发起审批的位置,审批中心区块可以发起和处理所有审批。

工作流:JSON 变量映射节点

新增用于将上游节点结果中的 JSON 数据映射为变量的专用节点。

参考文档:JSON 变量映射

扩展能力提升及插件示例

扩展项 插件示例
数据表预置字段扩展 @nocobase-sample/plugin-data-source-main-custom-preset-fields
日历颜色字段可选项扩展 @nocobase-sample/plugin-calendar-register-color-field
日历标题字段可选项扩展 @nocobase-sample/plugin-calendar-register-title-field
公式可选项字段扩展 @nocobase-sample/plugin-field-formula-register-expression-field
看板分组字段扩展 @nocobase-sample/plugin-kanban-register-group-field
筛选操作符扩展 @nocobase-sample/plugin-register-filter-operator
文件存储扩展 @nocobase-sample/plugin-file-storage-demo

不兼容变更

Token 安全策略更新

1.6 版本新增了 Token 安全策略,Auth 认证检查未通过时,将返回 401 错误并跳转至登录页。此行为与之前版本有所不同。如需跳过检查,可参考以下示例进行处理:

前端请求

javascript 复制代码
useRequest({
  url: '/test',
  skipAuth: true,
});

api.request({
  url: '/test',
  skipAuth: true,
});

后端中间件

javascript 复制代码
class PluginMiddlewareExampleServer extends plugin {
  middlewareExample = (ctx, next) => {
    if (ctx.path === '/path/to') {
      ctx.skipAuthCheck = true;
    }
    await next();
  };
  async load() {
    this.app.dataSourceManager.afterAddDataSource((dataSource) => {
      dataSource.resourceManager.use(this.middlewareExample, {
        before: 'auth',
      });
    });
  }
}

单元测试函数 agent.login 由同步改为异步

由于认证流程需要进行一些异步操作,测试函数 login 改为异步, 示例:

TypeScript 复制代码
import { createMockServer } from '@nocobase/test';

describe('my db suite', () => {
  let app;
  let agent;

  beforeEach(async () => {
    app = await createMockServer({
      registerActions: true,
      acl: true,
      plugins: ['users', 'auth', 'acl'],
    });
    agent = await app.agent().login(1);
  });

  test('case1', async () => {
    await agent.get('/examples');
    await agent.get('/examples');
    await agent.resource('examples').create();
  });
});

提供全新的用户中心设置项的扩展 API

API

ts 复制代码
type UserCenterSettingsItemOptions = SchemaSettingsItemType & { aclSnippet?: string };

class Application {
  addUserCenterSettingsItem(options: UserCenterSettingsItemOptions);
}

示例

javascript 复制代码
class PluginUserCenterSettingsExampleClient extends plugin {
  async load() {
    this.app.addUserCenterSettingsItem({
      name: 'nickName',
      Component: NickName,
      sort: 0,
    });
  }
}
相关推荐
修己xj1 小时前
Calibre-Web-Automated:打造你的私人图书馆
开源
自由鬼3 小时前
开源免费日志服务ELK Syack代替syslog
elk·开源
FIT2CLOUD飞致云5 小时前
AI应用加速落地丨MaxKB正在被政府、公共事业、教育和医疗行业用户广泛采纳
人工智能·开源
树上有只程序猿7 小时前
传统开发的 “吞金真相” 有多残酷?用好低代码省出一个亿
低代码
小奏技术12 小时前
typescript选择go重写性能提升10倍,为什么不是rust呢
typescript·开源
说私域13 小时前
开源链动2+1模式AI智能名片S2B2C商城小程序在KOC参与门店做透中的应用探索
人工智能·小程序·开源
长沙红胖子Qt13 小时前
OpenCV开发笔记(八十三):图像remap实现哈哈镜效果
opencv·开源
蚝油菜花13 小时前
Anus:公开整活!完全用 Manus 复刻 Manus 功能的开源 AI 智能体项目
人工智能·开源
web组态软件15 小时前
web组态可视化编辑器
大数据·前端·物联网·低代码·数学建模·编辑器